Java堆Xms和linux空闲内存不同

标签 java jvm jvm-arguments

我有一个java程序在centos Box中运行。 我的 -Xmx 和 -Xms 设置为 4000 Mb。

The program works fine.

但是当我执行 free -m 时,已用内存显示为 506 MB。根据我的理解,XMS 内存应该为 JVM 保留。为什么 free 命令不显示 java 使用的内存?

我还做了 jstat -gccapacity $(pidof java) 并且 NGCMN 和 NGCMX 已更新并且具有相同的值? 任何支持都会有帮助。 我正在运行我的程序 java -Xms41000m -Xmx42000m -jar

最佳答案

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

操作系统通常仅在第一次访问虚拟页面时才延迟分配物理内存。因此,虽然 Java 堆中未使用的部分没有被触及,但它不会真正消耗内存。

您可以使用-XX:+AlwaysPreTouch选项强制触摸JVM启动时的所有堆页。

关于Java堆Xms和linux空闲内存不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57387882/

相关文章:

multithreading - 确定性执行Java线程,工具支持

java - 查找正在运行的垃圾收集器类型

java - JMeter中使用多线程测试时无法解决 "Uncaught Exception java.lang.OutOfMemoryError: unable to create new native thread"

weblogic - weblogic中哪里添加JVM参数nojce?

java - 如何使用-XX :+PrintGCDetails

java - 在 Java 中将对象转换为 Double

java - 余数运算符给出负结果

java - 我正在尝试从每个循环的两个中检索结果

java - 使用默认模板的 spring mvc 出现 404 错误

java - 在java中使用FTP程序