我有一个在centos Box中运行的java程序。 我的-Xmx和-Xms设置为4000 Mb。
该程序运行正常。
但是当我执行free -m时,使用的内存显示为506 MB。根据我的理解,应该为JVM保留XMS内存。Why does free command not showing the java used memory ?
我还做了jstat -gccapacity $(pidof java)并且更新了NGCMN和NGCMX并且具有相同的值? 任何支持都会有所帮助。 我正在以 java -Xms41000m -Xmx42000m -jar
运行我的程序答案 0 :(得分:3)
即使-Xmx
和-Xms
设置为相同的值,为Java Heap保留的空间也不会立即分配到RAM中。
操作系统通常只是在第一次访问虚拟页面时懒惰地分配物理内存。因此,虽然未触及Java堆的未使用部分,但它实际上不会消耗内存。
您可以使用-XX:+AlwaysPreTouch
选项强行触摸JVM start上的所有堆页面。