上图第一个红框PSYoungGen表示这是一次新生代GC,[PSYoungGen: 65423K->10680K(76288K)] 表示新生代GC情况,65423K->63890K(251392K), 0.0299408 secs 表示堆的总体空间情况和耗时,[Times: user=0.09 sys=0.03, real=0.03 secs] user表示用户态CPU耗时,sys表示系统CPU耗时,real表示GC实际经历的时间。
上图第二个框FULL GC (Ergonomics) 表示这次是FULL GC,会同时回收新生代,老年代和永久区。Ergonomics表示引起这次GC的原因(Ergonomics具体代表什么原因可以查阅其他资料)。后面PSYoungGen代表新生代回收情况,ParOldGen表示老年代的回收情况,Metaspace表示永久区的回收情况。
要注意的是:PSYoungGen表示的是用 Paralle Scavenge 回收器进行回收的,ParOldGen表示用 Parallel Old 回收器进行回收的。如果使用的是其他回收器的话,关键字是不一样的。
-XX:PrintGCTimesStamps 该参数会在GC是输出虚拟机启动后的偏移时间。
-XX:PrintGCApplicationConcurrenTime 可以打印应用程序的执行时间
-XX:printGCApplicationStoppedTime 可以打印应用程序由于GC而停顿的时间。
-XX:PrintReferenceGC 可以跟踪系统的软引用,弱引用,虚引用和Finallize队列
-Xloggc:log/gc.log 指定GC日志输出到文件中
-verbose:class 跟踪类的加载和卸载
-XX:+TraceClassLoading 跟踪类的加载
-XX:+TraceClassUnloading 跟踪类的卸载
-XX:+PrintClassHistogram 加入该参数后,在java控制台中按下Ctrl+Break键,控制台会显示当前的类信息柱状图
-XX:+PrintVMOptions 可以在程序运行时打印虚拟机接收到的显式参数(即程序员通过命令给出的参数)
-XX:+PrintCommandLineFlags 可以打印虚拟机接收到的显示参数和隐式参数(即虚拟机启动时自行设置的参数)
-XX:+PrintFlagsFinal 会打印所有的系统参数,多达500多行