【问题标题】:jstat and jcmd giving different answers for metaspace memoryjstat 和 jcmd 对元空间内存给出不同的答案
【发布时间】:2019-09-20 16:06:06
【问题描述】:

我目前正在调查压缩类空间问题。我知道问题出在哪里,但在调查时,我注意到 jstat -gc ...jcmd ... GC.heap_info 给出了不同数量的元空间和压缩类空间容量和使用情况:

▶ jcmd 32152 GC.heap_info
32152:
 PSYoungGen      total 153600K, used 129316K [0x00000000eab00000, 0x00000000f5b00000, 0x0000000100000000)
  eden space 137728K, 91% used [0x00000000eab00000,0x00000000f26abf48,0x00000000f3180000)
  from space 15872K, 16% used [0x00000000f4100000,0x00000000f439d428,0x00000000f5080000)
  to   space 15872K, 0% used [0x00000000f3180000,0x00000000f3180000,0x00000000f4100000)
 ParOldGen       total 290816K, used 21446K [0x00000000c0000000, 0x00000000d1c00000, 0x00000000eab00000)
  object space 290816K, 7% used [0x00000000c0000000,0x00000000c14f1ac0,0x00000000d1c00000)
 Metaspace       used 59690K, capacity 64980K, committed 65192K, reserved 1103872K
  class space    used 9289K, capacity 10116K, committed 10152K, reserved 1048576K

▶ jstat -gc 32152
 S0C    S1C    S0U    S1U      EC       EU        OC         OU       MC     MU    CCSC   CCSU   YGC     YGCT    FGC    FGCT     GCT
15872.0 15872.0 2677.0  0.0   137728.0 126711.2  290816.0   21446.7   63400.0 58060.7 9896.0 9067.2      8    0.047   3      0.118    0.164

堆容量的数字似乎大致匹配(survivor、eden 和 old gen 的所有容量都一致)。堆使用数字不完全匹配,但我不希望它们匹配; jstatjcm 之后大约一秒钟被收集到这里。但是元空间编号全部关闭,jstat 编号通常略低于jcmd 编号。我重新运行了这两个命令,以确认调用之间没有发生类加载,事实上,这两个命令都给出了与以前相同的元空间编号输出。

这里发生了什么?他们测量这些数字的方式是否略有不同?哪个更准确?

运行时信息:

JVM: Java HotSpot(TM) 64-Bit Server VM (25.202-b08, mixed mode)
Java: version 1.8.0_202, vendor Oracle Corporation
-Xmx1024m
-XX:+UseParallelGC

【问题讨论】:

    标签: java jvm metaspace jstat jcmd


    【解决方案1】:

    好收获!数字确实不同:jstat 值可能稍微落后,因为它们是updated only after GC,而 jcmd 值始终是最新的。

    所以,jcmd GC.heap_info 应该更准确。

    还要注意 jstat 输出中的MC 对应于元空间提交的大小,而不是容量。

    【讨论】:

    • 啊!这完全有道理!刚刚注意到手册页确实说“垃圾收集堆统计信息”。虽然,只是一个注释;手册页将 MC 定义为元空间容量。有什么不同?我假设这里的容量是当前分配的容量而不是最大容量。
    • @BryanHead 关于元空间容量与已提交与保留:stackoverflow.com/questions/40891433/…
    猜你喜欢
    • 1970-01-01
    • 2015-04-02
    • 1970-01-01
    • 1970-01-01
    • 2020-10-03
    • 2019-04-11
    • 2020-12-31
    • 1970-01-01
    • 2017-01-25
    相关资源
    最近更新 更多