我刚刚发现有一些库可以计算java对象的浅层大小,因此我想我也可以用一种非常简单的方式编写它。这是我尝试过的。
Xmx
说A
来启动程序T
类型)并将其存储在列表中,以免GC清理它们。T
类型的对象的数量。设为n
n+1
个对象。这是代码,我尝试了
import java.util.ArrayList;
public class test {
public static void main(String[] a) {
ArrayList<Integer> l = new ArrayList<>();
int i=0;
try {
while(true) {
l.add(new Integer(1));
i++;
}
} catch(Throwable e) {
} finally {
l.clear();
System.out.println(i + "");
}
}
}
但是我注意到,每次运行中为同一Xmx
分配的对象数量是变化的。为什么是这样? JVM内部是否有任何随机的东西?