如何使用 jstat 获取堆使用情况?

How to get heap usage using jstat?

我是 运行 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 显示的那样?

有关一般参考,请参阅 https://docs.oracle.com/javase/8/docs/technotes/tools/unix/jstat.html

当前堆大小将是所有以 "C" - S0C 结尾的字段的总和S1CECOC(元空间除外,元空间是以"M"开头的字段) =39=])

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

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

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