GC日志问题

时间:2011-03-17 20:18:43

标签: java performance garbage-collection

在GC日志中关注(粗体)的含义是什么:

  

81296.997:[GC 7431462K-> 6692307K(8283776K),   1.0975224秒]
  82337.956:[GC 7531219K-> 6800788K(8283776K),   1.1563326秒]
  83338.712:[GC 7639700K-> 6898225K(8283776K),   1.0868988秒]
   83339.816:[GC 6899724K(8283776K),0.1227785秒]
   83351.437:[GC 6911811K(8283776K),0.4253903秒]
  84363.941:[GC 1859011K-> 1125589K(8283776K),   0.9137798秒]
  85319.780:[GC 1964501K-> 1217720K(8283776K),   0.8500309秒]

我希望在我的Xmx的95%左右之后记录完整,但我看到的是上面的内容。我的设置如下:

-d64  
-Xss384k  
-Xms8192m
-Xmx8192m  
-XX:ParallelGCThreads=12  
-XX:PermSize=512m  
-XX:MaxPermSize=512m  
-XX:NewSize=1024m  
-XX:MaxNewSize=1024m  
-XX:SurvivorRatio=8  
-Xnoclassgc  
-XX:+DisableExplicitGC  
-verbose:gc  
-XX:+UseParNewGC  
-XX:+CMSParallelRemarkEnabled  
-XX:+UseConcMarkSweepGC

让我重新解释一下我的问题:我知道整行的含义,但我的问题是为什么粗线条不同以及它是什么类型的GC?我不认为它是一代Young GC,如果没有,那么这是什么类型的GC?

2 个答案:

答案 0 :(得分:3)

这看起来很奇怪。粗体的线条似乎属于年轻一代的GC。从这个事实看来,没有空间被释放,并且从他们采取的短时间内他们是失败的尝试,这可能发生,因为老一代没有足够的空间来保留所有需要的物体。

我觉得奇怪的是下一行:

  

84363.941:[GC 1859011K - > 1125589K(8283776K),0.9137798秒]

之间发生了什么让四分之三的记忆释放了?这可能是parralel GC记录引起的异常现象,但有些事情并不存在。

您可以尝试添加-XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintTenuringDistribution以获得更清晰的视图。 (当然,与-Xloggc:<log file>选项一起使用。)

答案 1 :(得分:1)

我不是很确定,但似乎是括号外的数字是时间戳,是&#39; GC&#39;之后的数字。 GC后的内存,括号中的内存是GC发生前的数字。其余的很直观。