运行以下主方法:
public class Test {
public static void main(String[] args) {
System.out.println(Runtime.getRuntime().maxMemory() / (1024.0d * 1024.0d));
}
}
使用:
他们为什么不同?
我在Windows上运行Java HotSpot(TM)64位服务器VM 1.8.0_60。
答案 0 :(得分:1)
Xmx
配置托管堆的总大小的上限。这与可分配的java对象数量不同。
这是由于生成堆布局,堆的某些部分将始终未使用或仅暂时使用。例如。当收集器没有运行时,两个幸存者空间中的一个总是空的。
设置初始堆大小会影响其他设置,主要是代的相对大小,从而影响java对象的可用量。
要查看可以运行的实际受影响的设置
diff <(java -Xmx6G -XX:+PrintFlagsFinal) <(java -Xmx6G -Xms6G -XX:+PrintFlagsFinal)