0
如果我创建100,000个对象,则使用的内存大于用于10,000,000个对象的已用内存。Java - 使用的内存对于更少的对象更大
为什么?
A.java
public class A {
private static final int size = 1000*100;
public static void main(String[] args) {
double a = getMemoryInKilo();
double start = getTime();
for (int i = 0 ; i < size ; i++) {
new B();
}
double stop = getTime();
double b = getMemoryInKilo();
System.out.println(b-a + " KB ---> " + (stop-start)/1000+" seconds");
}
private static double getTime(){
return System.currentTimeMillis();
}
private static double getMemoryInKilo() {
return (double)(Runtime.getRuntime().totalMemory()- Runtime.getRuntime().freeMemory())/1000;
}
}
B.java
public class B {
private final double k = 0;
private final int a = 1;
private final String s = "123456789";
private final Object o = new Object();
private final Integer i = 10;
}
结果:
大小= 1000 * 100:
0.576 KB --->0.016秒
大小= 1000 * 100 * 100:
0.064 KB --->0.686秒
我用这些值运行程序很多次,我改变了顺序,但结果是sa我。用于100,000个对象的已用内存比用于10,000,000个对象的已用内存大。
详细:
- 的Java 1.7
- O.S:Windows 7的
- IDE:Eclipse的开普勒
我真的很希望我知道这个答案是什么,值得赞赏。 – Pointy 2014-09-28 03:37:57