如何将详细的垃圾回收输出重定向到文件?Sun的网站显示了Unix的示例,但不适用于Windows。
Answers:
从输出java -X
:
-Xloggc:<文件>将GC状态记录到带有时间戳的文件中
记录在这里:
-Xloggc:文件名
设置应将详细的GC事件信息重定向到该文件以进行日志记录的文件。从
-verbose:gc
每个记录的事件之前的第一个GC事件开始,写入该文件的信息与经过时间后的输出类似。如果两者都使用同一命令给出,则该-Xloggc
选项将覆盖。-verbose:gc
java
例:
-Xloggc:垃圾收集.log
所以输出看起来像这样:
0.590:[GC 896K-> 278K(5056K),0.0096650秒] 0.906:[GC 1174K-> 774K(5056K),0.0106856秒] 1.320:[GC 1670K-> 1009K(5056K),0.0101132秒] 1.459:[GC 1902K-> 1055K(5056K),0.0030196秒] 1.600:[GC 1951K-> 1161K(5056K),0.0032375秒] 1.686:[GC 1805K-> 1238K(5056K),0.0034732秒] 1.690:[完整GC 1238K-> 1238K(5056K),0.0631661秒] 1.874:[GC 62133K-> 61257K(65060K),0.0014464秒]
此外,如果您希望将输出通过管道传输到单独的文件,则可以执行以下操作:
在Sun JVM上:
-Xloggc:C:\whereever\jvm.log -verbose:gc -XX:+PrintGCDateStamps
在IBM JVM上:
-Xverbosegclog:C:\whereever\jvm.log
要添加到上面的答案中,有一篇很好的文章:Patrick Peschlow撰写的有用的JVM标志–第8部分(GC日志记录)。
简短摘录:
标志-XX:+PrintGC
(或别名-verbose:gc
)激活“简单” GC日志记录模式
默认情况下,GC日志写入标准输出。随着-Xloggc:<file>
我们可以改为指定输出文件。请注意,这个标志隐式设置-XX:+PrintGC
,并-XX:+PrintGCTimeStamps
为好。
如果使用-XX:+PrintGCDetails
代替-XX:+PrintGC
,则会激活“详细的” GC日志记录模式,该模式根据所使用的GC算法而有所不同。
随着-XX:+PrintGCTimeStamps
时间戳反映,因为JVM开始在几秒钟内通过实时添加到每一行。
如果我们指定-XX:+PrintGCDateStamps
每行以绝对日期和时间开头。