如何将详细垃圾收集输出重定向到文件? Sun的网站显示了Unix的一个例子,但它不适用于Windows。
答案 0 :(得分:86)
来自java -X
的输出:
-Xloggc:<file> log GC status to a file with time stamps
记录here:
<强> -Xloggc:文件名 强>
设置应将重定向的GC事件信息重定向到的文件以进行日志记录。写入此文件的信息类似于
-verbose:gc
的输出,其中包含自每个记录事件之前的第一个GC事件以来经过的时间。如果两者都使用相同的-Xloggc
命令,则-verbose:gc
选项会覆盖java
。示例:
-Xloggc:garbage-collection.log
所以输出看起来像这样:
0.590: [GC 896K->278K(5056K), 0.0096650 secs] 0.906: [GC 1174K->774K(5056K), 0.0106856 secs] 1.320: [GC 1670K->1009K(5056K), 0.0101132 secs] 1.459: [GC 1902K->1055K(5056K), 0.0030196 secs] 1.600: [GC 1951K->1161K(5056K), 0.0032375 secs] 1.686: [GC 1805K->1238K(5056K), 0.0034732 secs] 1.690: [Full GC 1238K->1238K(5056K), 0.0631661 secs] 1.874: [GC 62133K->61257K(65060K), 0.0014464 secs]
答案 1 :(得分:36)
如果另外要将输出通过管道传输到单独的文件,可以执行以下操作:
在 Sun JVM:
上-Xloggc:C:\whereever\jvm.log -verbose:gc -XX:+PrintGCDateStamps
在 IBM JVM:
上-Xverbosegclog:C:\whereever\jvm.log
答案 2 :(得分:8)
为了补充上述答案,Patrick Peschlow撰写了一篇好文章:Useful JVM Flags – Part 8 (GC Logging)。
简短摘录:
标记 -XX:+PrintGC
(或别名-verbose:gc
)激活“简单”GC记录模式
默认情况下,GC日志将写入stdout。使用 -Xloggc:<file>
,我们可以改为指定输出文件。请注意,此标记也会隐式设置-XX:+PrintGC
和-XX:+PrintGCTimeStamps
。
如果我们使用 -XX:+PrintGCDetails
而不是-XX:+PrintGC
,我们会激活“详细”GC记录模式,该模式因使用的GC算法而异。
使用 -XX:+PrintGCTimeStamps
一个时间戳,反映自JVM开始以来几秒内传递的实时时间。
如果我们指定 -XX:+PrintGCDateStamps
,则每行都以绝对日期和时间开头。
答案 3 :(得分:3)