我使用下面的实现来测试 java 对象的内存消耗。
但是当调用方法的 for 循环中的 i 限制为 384 到 1694 时,它会将使用情况打印为104936 B。当上述 i 限制小于 384 时,
它将使用情况打印为0B 。
为什么是这样?
- IDE:日食开普勒
- java : 1.5(当java版本也改变时,这会有所不同)
操作系统:Ubuntu 12.10
public static void main(String[] args) { Runtime runtime = Runtime.getRuntime(); long totalStart = runtime.totalMemory(); long start = runtime.freeMemory(); SampleTester sampleTester = new SampleTester(); sampleTester.callingMethod(); long totalEnd = runtime.totalMemory(); long end = runtime.freeMemory(); System.out.println("Usage [(("+totalEnd+"-"+end+") - ("+totalStart+"-"+start+"))] \t: " + ((totalEnd-end) - (totalStart-start))); } private void callingMethod(){ for(int i = 0; i < 1694; i++){ ArrayList<String> arrayList = new ArrayList<String>(); } }