Java 堆 Xms 和 linux 空闲内存不同
Java heap Xms and linux free memory different
我在 centos Box 中有一个 java 程序 运行。
我的 -Xmx 和 -Xms 设置为 4000 Mb。
The program works fine.
但是当我执行 free -m 时,已用内存显示为 506 MB。按照我的理解,XMS内存应该留给JVM使用。Why does free command not showing the java used memory ?
我也完成了 jstat -gccapacity $(pidof java) 并且 NGCMN 和 NGCMX 更新并具有相同的值?
任何支持都会有所帮助。
我是 运行 我的程序 java -Xms41000m -Xmx42000m -jar
即使 -Xmx
和 -Xms
设置为相同的值,为 Java 堆保留的 space 也不会立即在 RAM 中分配。
操作系统通常延迟分配物理内存,仅在第一次访问虚拟页面时分配。因此,虽然 Java 堆未使用的部分未被触及,但它不会真正消耗内存。
您可以使用 -XX:+AlwaysPreTouch
选项在 JVM 启动时强制访问所有堆页面。
我在 centos Box 中有一个 java 程序 运行。 我的 -Xmx 和 -Xms 设置为 4000 Mb。
The program works fine.
但是当我执行 free -m 时,已用内存显示为 506 MB。按照我的理解,XMS内存应该留给JVM使用。Why does free command not showing the java used memory ?
我也完成了 jstat -gccapacity $(pidof java) 并且 NGCMN 和 NGCMX 更新并具有相同的值? 任何支持都会有所帮助。 我是 运行 我的程序 java -Xms41000m -Xmx42000m -jar
即使 -Xmx
和 -Xms
设置为相同的值,为 Java 堆保留的 space 也不会立即在 RAM 中分配。
操作系统通常延迟分配物理内存,仅在第一次访问虚拟页面时分配。因此,虽然 Java 堆未使用的部分未被触及,但它不会真正消耗内存。
您可以使用 -XX:+AlwaysPreTouch
选项在 JVM 启动时强制访问所有堆页面。