我正在尝试计算此存根的运行时内存使用量。这在eclipse中运行正常但是当我在linux服务器上运行相同的代码时,它不会打印除0之外的任何内容。 服务器配置: 64位, 4核心服务器, 15GB RAM
List<Object> objList = new ArrayList<Object>();
Runtime runTime = Runtime.getRuntime();
long total1 = (runTime.totalMemory()) - (runTime.freeMemory());
for (int i = 0; i < 100000; i++) {
Object nee = new Object();
objList.add(nee);
}
long total2 = (runTime.totalMemory()) - (runTime.freeMemory());
System.out.println("total memory consumed : " + (total2 - total1));
获得一些生成2.5米对象的值,但是对于任何数量较少的对象都没有显示任何值。
根据我的理解,服务器对内存计算有一些“精确度”。 意味着,计算出的内存值不会发生变化,直到内存消耗不超过这个“精度”值。
现在,怀疑这个精度值是如何确定的并且是可配置的吗?
答案 0 :(得分:2)
服务器上的常见做法是将输出流重定向远离控制台,因为通常没有。与服务器管理员交谈并检查它是否会转到/ dev / null,日志文件或类似内容。