2011-03-17 106 views
1

什么是GC日志以下(粗体)的含义: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秒]

我希望在日志中全部 95%左右,我的XMX后进行,但上面我所看到的是。我的设置低于:

-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?我不认为这是年轻一代GC,如果不是,那么这是什么样的GC?

+0

你的jvm的版本是什么? – 2011-03-17 20:45:36

+0

其中:Java版本“1.6.0_21” Java(TM)SE运行时环境(版本1.6.0_21-b06) Java HotSpot™服务器VM(版本17.0-b16,混合模式) – 2011-03-17 20:55:59

回答

3

这看起来很奇怪。大胆的线条似乎属于年轻一代的GC。这也从事实表明,没有空间被释放,从短暂的时间,他们采取了失败的尝试,这可能发生的原因是老一代没有足够的空间来占有所有需要的对象。

我感到奇怪的是下一行,但:

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

这也就之间发生在提出了三点四分之一的内存空闲了吗?这可能是由parralel GC记录引起的异常,但有些东西并不正确。

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

+0

感谢您的回复。所以你说的是GC系列是一个不寻常的案例?在生产中,我们遇到了这个问题,其中所有实例都显示相同的症状并严重影响其性能。您可以分享有关我们拥有的GC设置的任何其他信息吗? – 2011-03-18 19:25:07

+0

@raj_arni他们似乎没关系,并行gc线程的数量似乎有点高,但我不知道你的服务器有多少个CPU。但是根据你的日志,我可以说很少。如果您添加我在答案中列出的额外选项,我可能会帮助您。 – biziclop 2011-03-18 21:05:16

1

我不是很确定,但好像外括号内的数字是时间戳,'GC'后的数字是GC后的内存,括号内的数字是GC发生前的数字。其余的很直观。

+0

为了完整,第一个线上的数字是GC相对于应用程序开始发生的时间戳 - 请参阅http://java.sun.com/developer/technicalArticles/Programming/GCPortal/ – mindas 2011-03-17 22:11:51

+0

让我重新说明我的问题:我知道什么整条线的含义,但我的问题是为什么大胆的线条是不同的,它是什么样的GC?我不认为这是年轻一代GC,如果不是,那么这是什么样的GC? – 2011-03-18 12:14:49