一、GC日志相关参数

-XX:+PrintGC 简单模式

示例:wKiom1SvVIbAM5xWAABmpR6vvgM995.jpg

第一行的意思就是GC将已使用的堆空间从246656K减少到243120K,当前的堆容量(译者注:GC发生时)是376320K,GC持续的时间是0.0929090秒。

-XX:PrintGCDetails 详细模式,日志格式和使用算法相关

示例:wKiom1SvVQ-iBcYxAACXmWmtIf4142.jpg

这是一次在young generation中的GC,它将已使用的堆空间从246648K减少到了243136K,用时0.0935090秒。这个例子中“PSYoungGen”垃圾收集器将young generation所使用的堆空间从142816K减少到10752K。

young generation无法分配更多的对象空间:已经使用了142848K中的142816K。我们可以进一步得出结论,多数从young generation移除的对象仍然在堆空间中,只是被移到了old generation:可以发现即使young generation几乎被完全清空(从142816K减少到10752K),但是所占用的堆空间仍然基本相同(从246648K到243136K)。

详细日志的“Times”部分包含了GC所使用的CPU时间信息,分别为操作系统的用户空间和系统空间所使用的时间。同时,它显示了GC运行的“真实”时间(0.09秒是0.0929090秒的近似值)。如果CPU时间(0.55秒+0.10秒)明显多于”真实“时间(:0.09秒),我们可以得出结论:GC使用了多线程运行。这样的话CPU时间就是所有GC线程所花费的CPU时间的总和。

wKiom1SvVjajCbI7AACgKA5oiP4308.jpg


Full GC可以是通过应用程序,或者是一个外部的JVM接口。输出的日志是以“Full GC(System)”开头的。

-XX:+PrintGCTimeStamps和-XX:+PrintGCDateStamps 将时间和日期添加到GC日志中

示例:wKioL1SvWKeSJqmOAADtscI2AiE881.jpg

-Xloggc 指定日志输出地址