如何将详细垃圾收集输出重定向到文件?Sun 的网站展示了一个 Unix 的例子,但它不适用于 Windows。
从 java -X的输出:
java -X
-Xloggc:<file> log GC status to a file with time stamps
给你文件:
- 谢谢 设置将详细 GC 事件信息重定向到的文件,以便进行日志记录。写入该文件的信息类似于 -verbose:gc的输出,其中包含自每个日志记录事件之前的第一个 GC 事件以来所经过的时间。如果使用相同的 java命令给出两个选项,则 -Xloggc选项将覆盖 -verbose:gc。 例如: -Xloggc:garbage-collection.log
- 谢谢
设置将详细 GC 事件信息重定向到的文件,以便进行日志记录。写入该文件的信息类似于 -verbose:gc的输出,其中包含自每个日志记录事件之前的第一个 GC 事件以来所经过的时间。如果使用相同的 java命令给出两个选项,则 -Xloggc选项将覆盖 -verbose:gc。
-verbose:gc
java
-Xloggc
例如:
-Xloggc:garbage-collection.log
So the output looks something like this:
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]
另外,如果您想将输出通过管道传送到一个单独的文件,您可以这样做:
在 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 日志记录模式
-XX:+PrintGC
默认情况下,GC 日志写入 stdout。使用 -Xloggc:<file>,我们可以指定一个输出文件。注意,这个标志也隐式地设置了 -XX:+PrintGC和 -XX:+PrintGCTimeStamps。
-Xloggc:<file>
-XX:+PrintGCTimeStamps
如果我们使用 -XX:+PrintGCDetails而不是 -XX:+PrintGC,我们将激活“详细的”GC 日志记录模式,该模式根据所使用的 GC 算法的不同而不同。
-XX:+PrintGCDetails
使用 -XX:+PrintGCTimeStamps时间戳,反映自从 JVM start 添加到每一行以来以秒为单位传递的实际时间。
如果我们指定 -XX:+PrintGCDateStamps,每一行都以绝对日期和时间开始。
-XX:+PrintGCDateStamps
JEP 158 为 JVM 的所有组件引入了一个通用的日志记录系统,该系统将改变(并且 IMO 简化)日志记录与 GC 的工作方式。JEP 158添加了一个新的命令行选项来控制来自 JVM 所有组件的日志记录:
-Xlog
例如,以下选项:
-Xlog:gc
将使用 info级别到 stdout记录带有 gc标记的消息。或者这个:
info
stdout
gc
-Xlog:gc=debug:file=gc.txt:none
将使用 debug级别将带有 gc标记的消息记录到一个名为 gc.txt的文件中,不进行任何修饰。要了解更详细的讨论,您可以查看 JEP页面中的示例。
debug
gc.txt