Java堆Xms和linux可用内存不同

时间:2018-02-26 06:29:08

标签: java jvm jvm-arguments

我有一个在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

运行我的程序

1 个答案:

答案 0 :(得分:3)

即使-Xmx-Xms设置为相同的值,为Java Heap保留的空间也不会立即分配到RAM中。

操作系统通常只是在第一次访问虚拟页面时懒惰地分配物理内存。因此,虽然未触及Java堆的未使用部分,但它实际上不会消耗内存。

您可以使用-XX:+AlwaysPreTouch选项强行触摸JVM start上的所有堆页面。