Tomcat GC日志语句的解释

13

以下是我的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秒]

请问这里各个数字的含义是什么?

1个回答

28

这行代码的含义如下:

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)

在这里,表示总堆内存。因此,在可能的总堆4.1 Gb中,当执行GC时,已填充了2.5 Gb,并且已降至1.83 Gb - 再次清除掉相同的678 Mb。
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

Java垃圾回收日志信息


http://java.sun.com/docs/hotspot/gc1.4.2/example.html 和 http://java.sun.com/docs/hotspot/gc1.4.2/ - simplfuzz
请您详细说明用户时间、系统时间和实际时间的分解情况?Unix的解释很好,但我不明白这些时间在GC的背景下有什么意义。 - Chaitanya MSV

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接