java - JVM maxHeapSize 和 InitialHeapSize 未反射(reflect)在 htop 中

标签 java jvm heap-memory

我有一台 Linux 机器,正在其中运行 Java 应用程序。 我正在使用这些参数运行 jvm:-Xmx27231m -Xms27231m

但是当我查看 htop/top 时。 我对整个系统和具体流程的观察是,jvm 实际上没有保留我要求的 27GB 堆。 我看到的是 虚拟:32.8G 分辨率:15.3G SHR:16536

在我的所有其他 prod/qa/dev 机器中,RES 反射(reflect)了我要求 JVM 为我保留的堆大小的确切数量(可能多一点)。 然而,对于一台特定的机器来说,情况并非如此。 我不明白为什么会发生这种情况。

我将 Java Mission Control 附加到该进程,我看到 InitialHeapSize 和 MaxHeapSize 实际上具有正确的值,但类型不是 CommandLine,而是 Ergonomic。我实在不知道这意味着什么。

有人吗? 谢谢

最佳答案

JVM 不会提前预修改页面,以减少启动时间。不过,您可以使用此选项强制执行此操作。

-XX:+AlwaysPreTouch -Xmx27g -Xms27g

顺便说一句,这不会阻止 JVM 将不使用的内存释放回操作系统(尽管 JVM 很少这样做,据我所知),也不会将堆锁定到主内存中以防止交换。

However for one particular machine this is not the case.

很可能它没有正确的 Activity 导致内存被延迟使用。

关于java - JVM maxHeapSize 和 InitialHeapSize 未反射(reflect)在 htop 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47705422/

相关文章:

java - 调用已经适用于单选按钮的函数,以便打印详细信息

java - 在一个 Maven 项目中使用第 3 方 jar 的两个版本(存在代码冲突)

java - 尽管有代理,Java PKIX/validator.ValidatorException 仍存在 SSL 问题

java - 这是在 java 中执行以下任务的最佳方法

java - 已用堆大小持续增加

java - 类、对象和实例之间的区别

java - Model.listSubjectsWithProperty(Property p, String o) 不列出具有相同字符串值的类型文字的资源

ubuntu - IntelliJ IDEA 渲染坏字体

Java - AttachNotSupportedException : Unable to open socket file: HotSpot VM not loaded

javascript - Node.js虚拟内存在使用子进程时不断增加