2015-08-21 25 views
1

我在開始時只收到一個完整的GC。任何人都知道爲什麼這個FULL GC正在發生。詳細的GC日誌粘貼在下面。Java垃圾回收 - 發生一個FULL GC

Java HotSpot(TM) 64-Bit Server VM (24.79-b02) for linux-amd64 JRE (1.7.0_79-b15), built on Apr 10 2015 11:34:48 by "java_re" with gcc 4.3.0 20080428 (Red Hat 4.3.0-8) 
Memory: 4k page, physical 12028696k(8289940k free), swap 0k(0k free) 
CommandLine flags: -XX:+AggressiveOpts -XX:+AlwaysCompileLoopMethods -XX:+AlwaysPreTouch -XX:CMSInitiatingOccupancyFraction=60 -XX:+CMSParallelRemarkEnabled -XX:-CMSPrecleaningEnabled -XX:+DoEscapeAnalysis -XX:InitialHeapSize=2621440000 -XX:MaxHeapSize=2621440000 -XX:MaxNewSize=1572864000 -XX:MaxTenuringThreshold=1 -XX:NewSize=1572864000 -XX:OldPLABSize=16 -XX:ParallelGCThreads=8 -XX:+PrintGC -XX:+PrintGCDateStamps -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:SurvivorRatio=8 -XX:TargetSurvivorRatio=90 -XX:+UseCompressedOops -XX:+UseConcMarkSweepGC -XX:+UseFastAccessorMethods -XX:+UseParNewGC 
2015-08-19T16:13:33.068+0100: 101.480: [GC2015-08-19T16:13:33.068+0100: 101.480: [ParNew: 1228800K->153600K(1382400K), 0.2028820 secs] 1228800K->183823K(2406400K), 0.2029750 secs] [Times: user=0.86 sys=0.01, real=0.20 secs] 
2015-08-19T16:24:52.983+0100: 781.395: [GC2015-08-19T16:24:52.983+0100: 781.395: [ParNew: 1382400K->117199K(1382400K), 0.1762650 secs] 1412623K->292710K(2406400K), 0.1763560 secs] [Times: user=0.88 sys=0.00, real=0.18 secs] 

.........................

2015-08-19T16:34:49.144+0100: 1377.556: [GC2015-08-19T16:34:49.144+0100: 1377.556: [ParNew: 1234692K->7088K(1382400K), 0.0146160 secs] 1520104K->293793K(2406400K), 0.0147080 secs] [Times: user=0.08 sys=0.00, real=0.02 secs] 
2015-08-19T16:34:52.364+0100: 1380.776: [GC2015-08-19T16:34:52.364+0100: 1380.776: [ParNew: 1235888K->5535K(1382400K), 0.0112050 secs] 1522593K->293080K(2406400K), 0.0113010 secs] [Times: user=0.05 sys=0.01, real=0.01 secs] 
2015-08-19T16:34:55.607+0100: 1384.018: [GC2015-08-19T16:34:55.607+0100: 1384.018: [ParNew: 1234335K->6833K(1382400K), 0.0117390 secs] 1521880K->295111K(2406400K), 0.0118300 secs] [Times: user=0.05 sys=0.00, real=0.02 secs] 
2015-08-19T16:34:58.699+0100: 1387.110: ****[Full GC2015-08-19T16:34:58.699+0100: 1387.110: [CMS: 288277K->201657K(1024000K), 0.8300700 secs] 1485407K->201657K(2406400K), [CMS Perm : 33686K->33656K(33920K)], 0.8387470 secs] [Times: user=1.10 sys=0.03, real=0.83 secs]**** 
2015-08-19T16:35:01.927+0100: 1390.338: [GC2015-08-19T16:35:01.927+0100: 1390.338: [ParNew: 1228800K->27726K(1382400K), 0.0202150 secs] 1430457K->229384K(2406400K), 0.0203230 secs] [Times: user=0.12 sys=0.01, real=0.02 secs] 

2015-08-19T16:42:07.420+0100: 1815.832: [GC [1 CMS-initial-mark: 514340K(1024000K)] 522144K(2406400K), 0.0052180 secs] [Times: user=0.01 sys=0.00, real=0.01 secs] 
2015-08-19T16:42:07.426+0100: 1815.837: [CMS-concurrent-mark-start] 
2015-08-19T16:42:07.749+0100: 1816.161: [CMS-concurrent-mark: 0.324/0.324 secs] [Times: user=1.16 sys=0.14, real=0.32 secs] 
2015-08-19T16:42:07.750+0100: 1816.161: [GC[YG occupancy: 255614 K (1382400 K)]2015-08-19T16:42:07.750+0100: 1816.161: [Rescan (parallel) , 0.1178140 secs]2015-08-19T16:42:07.868+0100: 1816.279: [weak refs processing, 0.0001000 secs]2015-08-19T16:42:07.868+0100: 1816.279: [scrub string table, 0.0010920 secs] [1 CMS-remark: 514340K(1024000K)] 769955K(2406400K), 0.1190980 secs] [Times: user=0.74 sys=0.01, real=0.12 secs] 
2015-08-19T16:42:07.869+0100: 1816.281: [CMS-concurrent-sweep-start] 
2015-08-19T16:42:08.560+0100: 1816.971: [CMS-concurrent-sweep: 0.690/0.691 secs] [Times: user=2.18 sys=0.35, real=0.69 secs] 
2015-08-19T16:42:08.560+0100: 1816.972: [CMS-concurrent-reset-start] 
2015-08-19T16:42:08.563+0100: 1816.975: [CMS-concurrent-reset: 0.003/0.003 secs] [Times: user=0.01 sys=0.00, real=0.00 secs] 
2015-08-19T16:42:09.191+0100: 1817.602: [GC2015-08-19T16:42:09.191+0100: 1817.602: [ParNew: 1235443K->7655K(1382400K), 0.0144670 

我想要知道,

1)上面顯示的FULL GC是否停止工作,因爲看起來它不是GC年輕一代?假定這個FULL GC僅適用於終身教職和永久代。

2)FULL GC顯示CMS。這是否是併發垃圾收集的併發標記掃描算法?如果是,爲什麼它沒有顯示FULL GC中的所有步驟,因爲它是在併發標記掃描算法運行時粘貼的(上面粘貼)

3)永久CMS GC在這裏是否正常?爲什麼FULL GC在這裏觸發只有一個在開始

任何幫助將不勝感激。

+0

不知道你是什麼意思的「在開始」。 Full GC發生在21分鐘後。 – Andreas

+0

你可能想看到http://stackoverflow.com/questions/9546392/what-triggers-a-full-garbage-collection-in-java – Andreas

+0

我不明白你的問題。這裏是否存在實際問題? – the8472

回答

0

問題是 - 有一個完整的GC需要更多時間〜800 msecc,之後沒有看到完整的GC。

我明白了原因。通過使-XX:PermSize等於-XX:MaxPermSize,可以消除此FULL GC。