2

早上好,

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

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 垃圾收集分离输出。我现在的问题是,底部的这些日志输出语句是什么?他们是伊甸园还是终身垃圾收集?

谢谢你的时间。

4

2 回答 2

2

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

于 2012-07-31T13:57:31.500 回答
0

您可以在此处找到有关 CMS GC 日志的一些信息。在镜头中,它们是 CMS 算法的特定不间断世界阶段。

尽管我建议您不要解析 GC 日志,但它们的格式笨拙且不稳定,并且由于多线程日志记录,有时它们可​​能无法解析。

检查此处描述的 JMX 基本替代方案。

于 2012-08-02T10:45:51.617 回答