无论Xms=Xmx与否,Java max内存都是不同的
运行以下主要方法:无论Xms=Xmx与否,Java max内存都是不同的,java,memory,jvm,Java,Memory,Jvm,运行以下主要方法: public class Test { public static void main(String[] args) { System.out.println(Runtime.getRuntime().maxMemory() / (1024.0d * 1024.0d)); } } 与: -Xmx6G的结果是输出5461.5 -Xmx6G-Xms6G导致输出5888.0 为什么它们不同 我正在Windows上运行Java HotSpot(TM)
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。
Xmx
配置托管堆总体大小的上限。这与java对象的可分配数量不同
这是由于分代堆布局造成的,其中堆的某些部分将始终未使用或仅临时使用。例如,当收集器未运行时,两个幸存者空间中的一个总是空的
设置初始堆大小会影响其他设置,主要是生成的相对大小,从而影响java对象的可用数量
要查看实际受影响的设置,可以运行
diff