如何读取 "jstat -gcutil <PID>?" 的输出

How to read the output of "jstat -gcutil <PID>?"

我是 运行 一个 JBoss 服务器,以下输出属于 -gcutil 工具。我很好奇这个缩写是什么

/usr/java/jdk1.7.0_25/bin/jstat  -gcutil 47929 
  S0     S1     E      O      P     YGC     YGCT    FGC    FGCT     GCT   
  0.00   0.00  68.46 100.00  57.08  44539 5829.704 303497 241552.104 247381.808

谢谢

S0 = Survivor space 0 利用率占 space 当前容量的百分比。

S1 = Survivor space 1 利用率占 space 当前容量的百分比。

E = Eden space 利用率占 space 当前容量的百分比。

O = 旧 space 利用率占 space 当前容量的百分比。

P = 永久 space 利用率占 space 当前容量的百分比。

YGC = 新生代GC事件数。

YGCT = 年轻代垃圾回收时间。

FGC = full GC 事件数。

FGCT = 完整的垃圾收集时间。

GCT = 总垃圾收集时间。

请参阅 https://docs.oracle.com/javase/7/docs/technotes/tools/share/jstat.html#gcutil_option

中的文档

另外你也可以参考http://www.cs.lafayette.edu/docs/java/tooldocs/share/jstat.html

扩展一下@nurselcuk 的回答:内存分为堆space(分配对象的地方)和永久spaceP( 类的字节码存放的地方。堆space进一步分为年轻的Y和tenured/old generation O.年轻代由edenspaceE,和两个survivorspacesS0和[=18=组成]S1.

对象被分配到伊甸园space。当 eden space 用完时,垃圾收集器将活动对象移至 survivor space 并释放 eden space.

当 survivor space 耗尽时,垃圾收集器通常会移动 survivor space 中的活动对象。幸存者 space 0 和 1 似乎再次像复制收集器一样工作,其中对象仅分配到一个 space 而另一个保持空闲。当当前 space 已满时,所有活动对象都移动到空闲 space 并且两个 space 交换角色。如果一个对象已经被收集了一定次数,它就会被移动到 tenured space.

Tenured space 也是通过标记清除算法收集的垃圾。