【问题标题】:Why is JVM HeapMemoryUsage init value greater than commited / max value?为什么 JVM HeapMemoryUsage 初始化值大于提交/最大值?
【发布时间】:2020-03-22 15:38:27
【问题描述】:

我有一个具有以下选项的应用程序:

-xms2g -xmx2g

我发现init 的值大于maxcommited 的值。 似乎 init 值包含元空间大小。我搜索了javadoc,但没有找到答案。你能给我这个的代码/javadoc参考吗?

提前致谢。

【问题讨论】:

    标签: java java-8 jvm heap-memory


    【解决方案1】:

    getHeapMemoryUsage 将 init 描述为设置/定义值而不是真正的总和

    返回的内存使用的已使用和已提交的大小是所有堆内存池的这些值的总和,而返回的内存使用的初始和最大大小表示设置 strong> 堆内存,可能不是所有堆内存池的总和

    你的设置是 2g 等于 2147483648 作为你的初始显示

    【讨论】:

      【解决方案2】:

      https://docs.oracle.com/javase/7/docs/api/java/lang/management/MemoryUsage.html

      在“方法摘要”一节中,getInit() 以字节为单位返回 Java 虚拟机最初向操作系统请求用于内存管理的内存量。

      据我了解,'init' 是 JVM 请求的内存量,可以大于 'max',但 OS 只返回定义的 'max' 量。在您的情况下,它是 2077753344 字节。

      【讨论】:

        猜你喜欢
        • 2013-09-11
        • 1970-01-01
        • 2016-06-14
        • 2019-03-21
        • 1970-01-01
        • 2018-04-14
        • 1970-01-01
        • 1970-01-01
        • 2017-11-21
        相关资源
        最近更新 更多