Java垃圾收集日志输出

时间:2012-07-31 13:44:48

标签: java logging garbage-collection jvm

早上好,

我正在编写一个解析Java Garbage集合的程序,我需要一些帮助来确定日志输出的确切含义。我的日志文件包含以下输出,我理解:

46834.386: [Full GC 46834.386: [CMS: 412190K->414324K(8388608K), 2.9557920 secs] 4319571K->414324K(16769088K), [CMS Perm : 96586K->96555K(2097152K)], 2.9561693 secs]
49394.883: [GC 49394.883: [ParNew: 8372352K->0K(8380480K), 0.0256383 secs] 8786676K->422169K(16769088K), 0.0258842 secs]

但它也包含以下输出,我不太明白:

 CMS: abort preclean due to time 2087298.141: [CMS-concurrent-abortable-preclean: 

0.680/1.055 secs]
2087298.146: [GC[YG occupancy: 7515768 K (8380480 K)]2087298.146: [Rescan (parallel) , 5.0710721 secs]2087303.217: [weak refs processing, 0.0718252 secs] [1 CMS-remark: 3769931K(8388608K)] 11285700K(16769088K), 5.1432270 secs]
2087303.289: [CMS-concurrent-sweep-start]
2087305.311: [CMS-concurrent-sweep: 2.022/2.022 secs]
2087305.311: [CMS-concurrent-reset-start]
2087305.393: [CMS-concurrent-reset: 0.082/0.082 secs]
2087307.415: [GC [1 CMS-initial-mark: 3769806K(8388608K)] 12129341K(16769088K), 4.3876237 secs]
2087311.803: [CMS-concurrent-mark-start]
2087311.816: [GC 2087311.816: [ParNew: 8372352K->0K(8380480K), 0.2496844 secs] 12142158K->3865939K(16769088K), 0.2499456 secs]
2087318.573: [CMS-concurrent-mark: 6.508/6.770 secs]
2087318.573: [CMS-concurrent-preclean-start]
2087319.007: [CMS-concurrent-preclean: 0.410/0.434 secs]
2087319.007: [CMS-concurrent-abortable-preclean-start]

目前我正在使用正则表达式来分隔具有顶部格式的日志输出。它根据eden / tenured垃圾收集分类输出。我现在的问题是,底部的这些日志输出语句是什么?他们是伊甸园或任期垃圾收集品吗?

感谢您的时间。

2 个答案:

答案 0 :(得分:2)

[GCViewer] http://www.tagtraum.com/gcviewer.html适合您。您也可以下载源代码。

答案 1 :(得分:0)

您可以在CMS GC日志here上找到一些信息。在镜头中,它们是CMS算法的特定非停止世界阶段。

虽然我建议你不要解析GC日志,但是它们的格式是不稳定的,有时候由于多线程日志记录而无法解析。

检查here所述的JMX基本替代方案。