72

如何将详细垃圾收集输出重定向到文件?Sun 的网站显示了一个适用于 Unix 的示例,但它不适用于 Windows。

4

4 回答 4

94

从输出java -X

    -Xloggc:<file> 将 GC 状态记录到带有时间戳的文件中

记录在这里

-Xloggc:文件名

设置详细的 GC 事件信息应重定向到的文件以进行日志记录。写入此文件的信息类似于-verbose:gc自每个记录事件之前的第一个 GC 事件以来经过的时间的输出。如果两者都使用相同的命令给出,则该-Xloggc选项将覆盖。-verbose:gcjava

例子:

    -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 秒]
于 2009-07-21T21:06:39.480 回答
38

如果您还想将输出通过管道传输到单独的文件,您可以执行以下操作:

Sun JVM 上:

-Xloggc:C:\whereever\jvm.log -verbose:gc -XX:+PrintGCDateStamps

IBM JVM 上:

-Xverbosegclog:C:\whereever\jvm.log 
于 2011-02-21T16:50:35.297 回答
13

Java 9 和统一 JVM 日志记录

JEP 158为 JVM 的所有组件引入了一个通用的日志记录系统,这将改变(并且 IMO 简化)日志记录与 GC 的工作方式。JEP 158 添加了一个新的命令行选项来控制来自 JVM 的所有组件的日志记录:

-Xlog

例如,以下选项:

-Xlog:gc

gc使用infolevel to记录带有 tag 标记的消息stdout。或者这个:

-Xlog:gc=debug:file=gc.txt:none

gc使用debuglevel 标记的消息记录到一个gc.txt没有修饰的文件中。有关更详细的讨论,您可以查看JEP页面中的示例。

于 2017-04-20T10:25:17.443 回答
8

要添加到上述答案,有一篇很好的文章: Patrick Peschlow 的有用 JVM 标志 – 第 8 部分(GC 日志记录)

一个简短的摘录:

该标志-XX:+PrintGC(或别名-verbose:gc)激活“简单”GC 日志记录模式

默认情况下,GC 日志被写入标准输出。-Xloggc:<file>我们可以改为指定一个输出文件。请注意,此标志也隐式设置-XX:+PrintGCand -XX:+PrintGCTimeStamps

如果我们使用-XX:+PrintGCDetails而不是-XX:+PrintGC,我们将激活“详细” GC 日志记录模式,该模式因所使用的 GC 算法而异。

将反映自 JVM 启动以来经过-XX:+PrintGCTimeStamps的实时时间的时间戳添加到每一行。

如果我们指定-XX:+PrintGCDateStamps每行以绝对日期和时间开头。

于 2016-05-23T07:58:08.320 回答