以下是我的Tomcat服务器生成的catalina.out文件中的一条记录:
1885.855:[GC [PSYoungGen:742996K->64359K(761472K)] 2509583K->1832973K(4116928K),0.1453610秒] [Times:user=0.31 sys=0.00,real=0.14秒]
请问这里各个数字的含义是什么?
以下是我的Tomcat服务器生成的catalina.out文件中的一条记录:
1885.855:[GC [PSYoungGen:742996K->64359K(761472K)] 2509583K->1832973K(4116928K),0.1453610秒] [Times:user=0.31 sys=0.00,real=0.14秒]
请问这里各个数字的含义是什么?
这行代码的含义如下:
1885.85
- 表示JVM已经运行的时间,以秒为单位,您的情况下大约是31分钟左右,此时发生了GC。
[GC
- 表示此时发生了GC。这是一个部分GC,有时会显示Full GC
。
现在,JVM可用的总堆大小=年轻代+老年代
[PSYoungGen:742996K->64359K(761472K)
- 表示年轻代中的Parallel Scavenging Collector(这是JVM中许多可用GC收集器类型之一)。
GC释放的内存始终符合以下模式:
x->y(z)
x是GC之前的初始内存,y是GC之后的内存,z是JVM中该区域允许的总内存
因此,在您的示例中,742996K->64359K(761472K)
- 总年轻代大小为761Mb,当它达到742 Mb时会进行一次垃圾回收,并将其清除到64.3Mb,即释放了678 Mb的空间。
2509583K->1832973K(4116928K)
0.1453610 secs]
整个操作耗时0.1453610秒
[Times: user=0.31 sys=0.00, real=0.14 secs]
展示了所花费的用户时间,系统时间和实际时间的分解。
这只是一行 - 您将寻找一个模式,特别是其中包含Full GC
的模式,并使用像GCViewer这样的日志分析器来显示吞吐量和其他有用的信息。
此外,阅读Sun的文档以获取基础知识。
进一步阅读:
http://sujitpal.blogspot.com/2006/08/charting-jvm-garbage-collection.html