一,跟踪垃圾回收–读懂虚拟机日志
1,以下日志打印从上到下,依次变得越来越详细:
-XX:+PrintGC 只要遇到GC,就会打印日志
-XX:+PrintGCDetails 打印详细的GC日志
-XX:+PrintHeapAtGC 每次GC前后分别打印堆的信息
2,-XX:+PrintGCTimeStamps 该参数会在每次GC发生时,额外输出GC发生的时间,该输出时间为虚拟机启动后的时间偏移量。
3,由于GC会引起应用程序停顿,因此,需要特别关注应用程序的执行时间和停顿时间, -XX:+PrintGCApplicationConcurrentTime可以打印应用程序的执行时间,使用参数 -XX:+PrintGCApplicationStoppedTime可以打印应用程序GC产生的停顿时间。
4,想跟踪系统内的软引用,弱引用,虚引用和Finallize队列,则可以使用-XX:+PrintReferenceGC
5,默认情况下GC日志会在控制台中输出,这不便于后续分析和定位问题,为此,虚拟机允许将GC日志以文件的形式输出,使用-Xloggc:log/gc.log,可以在当前目录下的log文件夹下的gc.log文件中记录所有的GC日志。