我是 jstat 工具的新手。因此我做了如下示例。
./jstat -gcutil -t 4001 5000
Timestamp S0 S1 E O P YGC YGCT FGC FGCT GCT
565088.4 0.00 0.89 75.86 40.59 84.80 405 3.822 4 0.549 4.371
565093.4 0.00 0.89 77.81 40.59 84.80 405 3.822 4 0.549 4.371
565098.4 0.00 0.89 77.81 40.59 84.80 405 3.822 4 0.549 4.371
565103.5 0.00 0.89 77.85 40.59 84.80 405 3.822 4 0.549 4.371
565108.5 0.00 0.89 77.85 40.59 84.80 405 3.822 4 0.549 4.371
565113.4 0.00 0.89 77.85 40.59 84.80 405 3.822 4 0.549 4.371
jstat -gc output
S0C S1C S0U S1U EC EU OC OU PC PU YGC YGCT FGC FGCT GCT
704.0 704.0 0.4 0.0 6080.0 4013.8 14928.0 6335.2 21248.0 18019.6 436 3.957 4 0.549 4.506
704.0 704.0 0.4 0.0 6080.0 4016.6 14928.0 6335.2 21248.0 18019.6 436 3.957 4 0.549 4.506
704.0 704.0 0.4 0.0 6080.0 4135.4 14928.0 6335.2 21248.0 18019.6 436 3.957 4 0.549 4.506
704.0 704.0 0.4 0.0 6080.0 4135.4 14928.0 6335.2 21248.0 18019.6 436 3.957 4 0.549 4.506
704.0 704.0 0.4 0.0 6080.0 4135.4 14928.0 6335.2 21248.0 18019.6 436 3.957 4 0.549 4.506
704.0 704.0 0.4 0.0 6080.0 4135.4 14928.0 6335.2 21248.0 18019.6 436 3.957 4 0.549 4.506
这个结果说明什么?哪些列需要注意可能的内存问题,例如内存泄漏等
请参阅文档:
https://docs.oracle.com/javase/8/docs/technotes/tools/unix/jstat.html https://docs.oracle.com/javase/8/docs/technotes/tools/unix/jstat.html
基本上一行是一个时间点。这些列显示有关 JVM 内存区域(Survivor、Eden 等)的数据,如果不了解 JVM 的工作原理,就不可能理解它们。
例如文章中年轻代中的 JVM 垃圾回收 https://stackoverflow.com/questions/13660871/jvm-garbage-collection-in-young-generation/13661014#13661014有一些解释。
以下是 JVM 对象生成工作原理的摘录:
Eden
是创建新对象的地方。当伊甸园满了时,small GC
运行时:如果一个对象没有对它的引用,则将其删除,否则将生存,并移动到Survivor
空间(一次仅使用一个幸存者空间,其他空间中的所有对象都会复制到那里)。
如果一个对象在一定次数的来回复制中幸存下来,它就会被移动到Old
空间。如果旧空间已满,Full GC
run,会影响JVM中的所有对象,所以是比较重的操作。
另外,还有Permanent
空间,存储“元数据”(类描述符、字段、方法……描述符)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)