【问题标题】:How to get heap usage using jstat?如何使用 jstat 获取堆使用情况?
【发布时间】:2017-09-29 20:43:34
【问题描述】:

我正在运行 jstat -gc(来自 OpenJDK):

# jstat -gc 1
 S0C    S1C    S0U    S1U      EC       EU        OC         OU       MC     MU    CCSC   CCSU   YGC     YGCT    FGC    FGCT     GCT
287744.0 290304.0 88368.6  0.0   1469440.0 787186.5 2162176.0  1805969.7  945432.0 923880.4 136576.0 133284.0    268   32.797  21     30.089   62.886

如何阅读:

  1. 使用的堆

  2. 堆大小

  3. 最大堆

从这个输出中,就像 VisualVM 显示的那样?

【问题讨论】:

  • 如果您只对这三个值感兴趣,那么jmap -heap <pid> 可能更适合您的需求。
  • 不错。最大堆 ​​(3) 显示在 MaxHeapSize 中。 Used heap (1) 是 Eden Space、From Space、To Space 和 PS Old Generation 中“used”的总和。但是如何获得堆大小(2)?
  • 另外,不幸的是 OpenJDK 中的 jmap 没有 -heap 参数...还有其他选择吗?
  • 您使用的是哪个 OpenJDK 版本?我可以在这里看到选项(openjdk 版本“1.8.0_131”)。
  • openjdk8-8.111.14-r0 Alpine Linux 包,javac -version 显示javac 1.8.0_111-internal

标签: java heap-memory jstat


【解决方案1】:

请参阅https://docs.oracle.com/javase/8/docs/technotes/tools/unix/jstat.html 以获得一般参考。

当前堆大小是所有以 "C" - S0C、S1C、EC 结尾的字段的总和、OC(元空间除外,即以“M”开头的字段)

已用堆是所有以 "U" 结尾的字段的总和 - S0U、S1U、EU、OU(同样,元空间除外)。

请注意,“C” 值(当前)大于或等于 “U” 值(实际使用)。

要获得最大值,请使用 -gccapacity 标志运行 jstat 并将所有以 "MX" 结尾的字段相加(NGCMX、OGCMX, ... 除了 MCMX 这是元空间)。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-06-07
  • 2012-04-03
  • 1970-01-01
  • 2012-03-15
  • 2012-02-03
  • 2019-11-02
  • 1970-01-01
相关资源
最近更新 更多