线上游戏的gc情况

resin jvm参数配置如下:

      <jvm-arg>-XX:+PrintGCTimeStamps</jvm-arg>

      <jvm-arg>-XX:+PrintGCDetails</jvm-arg>

      <jvm-arg>-Xloggc:gc.log</jvm-arg>

      <jvm-arg>-Dfile.encoding=UTF-8</jvm-arg>

      <jvm-arg>-Xmx6144m</jvm-arg>

      <jvm-arg>-Xms6144m</jvm-arg>

      <jvm-arg>-Xmn2048m</jvm-arg>

      <jvm-arg>-Xss1m</jvm-arg>

      <jvm-arg>-server</jvm-arg>

1、在resin刚启动时就进行了一次fullgc:

1.349: [Full GC (System) [PSYoungGen: 16631K->0K(1835008K)] [PSOldGen: 0K->16408K(4194304K)] 16631K->16408K(6029312K) [PSPermGen: 14781K->14781K(30080K)], 0.1134590 secs] [Times: user=0.11 sys=0.00, real=0.11 secs] 

2、之后平均80s进行一次minor GC;

177462.241: [GC [PSYoungGen: 2092544K->3167K(2093120K)] 3683567K->1595410K(6287424K), 0.0204850 secs] [Times: user=0.16 sys=0.00, real=0.02 secs] 

177542.684: [GC [PSYoungGen: 2093087K->2272K(2093504K)] 3685330K->1596253K(6287808K), 0.0204380 secs] [Times: user=0.14 sys=0.00, real=0.02 secs] 

177622.619: [GC [PSYoungGen: 2092064K->2144K(2093440K)] 3686045K->1597194K(6287744K), 0.0192200 secs] [Times: user=0.14 sys=0.00, real=0.02 secs] 

3、在5天后发生第二次fullgc,gc时间比较长91s

453186.415: [Full GC [PSYoungGen: 2368K->0K(2093824K)] [PSOldGen: 4194223K->858772K(4194304K)] 4196591K->858772K(6288128K) [PSPermGen: 82728K->82728K(83968K)], 91.7891720 secs] [Times: user=6.60 sys=1.31, real=91.79 secs] 


gc的回收方式都是采用java默认的方式(64位linux 8g内存 4个双核cpu),年轻代采用并行回收gc(parallel Scavenge Gc 即PS),年老代采用并行gc(parallelMSC);

问题:
1、fullgc的时间间隔还可以,但是gc的停顿时间太长了,下面准备采用并发CMSgc看看效果。还有台server,也是第五天fullgc,gc停顿时间40s,少一半时间;

2、PrintGCTimeStamps 打印的是JVM以启动时间为基准的相对时间,将PrintGCTimeStamps 改成 PrintGCDateStamps,以便显示gc的具体时间;




猜你喜欢

转载自ikon.iteye.com/blog/1597686