2017-11-08 8 views
2

GC 로그Full GC Continue가 발생하는 이유는 무엇입니까?

2017-11-08T01:48:24.133+0800: 63444.343: [Full GC [PSYoungGen: 918116K->0K(1494016K)] [ParOldGen: 2271465K->1273508K(2555904K)] 3189581K->1273508K(4049920K) [PSPermGen: 101780K->101780K(131072K)], 0.8804710 secs] [Times: user=8.48 sys=0.03, real=0.89 secs] 
2017-11-08T01:48:32.132+0800: 63452.342: [Full GC [PSYoungGen: 855154K->0K(1494016K)] [ParOldGen: 2287221K->1322801K(2555904K)] 3142375K->1322801K(4049920K) [PSPermGen: 101780K->101780K(131072K)], 0.8771230 secs] [Times: user=8.40 sys=0.00, real=0.88 secs] 
2017-11-08T01:48:40.132+0800: 63460.342: [Full GC [PSYoungGen: 902479K->0K(1494016K)] [ParOldGen: 2336514K->1256452K(2555904K)] 3238994K->1256452K(4049920K) [PSPermGen: 101780K->101780K(131072K)], 0.8855200 secs] [Times: user=8.84 sys=0.01, real=0.89 secs] 
2017-11-08T01:48:48.130+0800: 63468.340: [Full GC [PSYoungGen: 882590K->0K(1494016K)] [ParOldGen: 2270165K->1256453K(2555904K)] 3152755K->1256453K(4049920K) [PSPermGen: 101780K->101780K(131072K)], 0.8677890 secs] [Times: user=8.42 sys=0.01, real=0.87 secs] 
2017-11-08T01:48:56.133+0800: 63476.343: [Full GC [PSYoungGen: 861301K->0K(1494016K)] [ParOldGen: 2270166K->1322782K(2555904K)] 3131468K->1322782K(4049920K) [PSPermGen: 101780K->101780K(131072K)], 0.8013890 secs] [Times: user=7.17 sys=0.00, real=0.81 secs] 
2017-11-08T01:49:04.127+0800: 63484.337: [Full GC [PSYoungGen: 898990K->0K(1494016K)] [ParOldGen: 2336494K->1256170K(2555904K)] 3235485K->1256170K(4049920K) [PSPermGen: 101780K->101780K(131072K)], 0.8792570 secs] [Times: user=8.35 sys=0.00, real=0.88 secs] 
2017-11-08T01:49:12.132+0800: 63492.342: [Full GC [PSYoungGen: 885368K->0K(1494016K)] [ParOldGen: 2269882K->1256088K(2555904K)] 3155251K->1256088K(4049920K) [PSPermGen: 101780K->101780K(131072K)], 0.8924250 secs] [Times: user=8.41 sys=0.03, real=0.89 secs] 
2017-11-08T01:49:20.125+0800: 63500.335: [Full GC [PSYoungGen: 858394K->0K(1494016K)] [ParOldGen: 2269801K->1322779K(2555904K)] 3128195K->1322779K(4049920K) [PSPermGen: 101780K->101780K(131072K)], 0.8686500 secs] [Times: user=8.32 sys=0.00, real=0.87 secs] 
2017-11-08T01:49:28.128+0800: 63508.338: [Full GC [PSYoungGen: 902214K->0K(1494016K)] [ParOldGen: 2336492K->1256045K(2555904K)] 3238707K->1256045K(4049920K) [PSPermGen: 101780K->101780K(131072K)], 0.8648800 secs] [Times: user=8.45 sys=0.01, real=0.87 secs] 
2017-11-08T01:49:36.128+0800: 63516.338: [Full GC [PSYoungGen: 883133K->0K(1494016K)] [ParOldGen: 2269758K->1256037K(2555904K)] 3152892K->1256037K(4049920K) [PSPermGen: 101780K->101780K(131072K)], 0.8212970 secs] [Times: user=7.20 sys=0.15, real=0.83 secs] 
2017-11-08T01:49:44.128+0800: 63524.338: [Full GC [PSYoungGen: 875607K->0K(1494016K)] [ParOldGen: 2269750K->1322438K(2555904K)] 3145357K->1322438K(4049920K) [PSPermGen: 101780K->101780K(131072K)], 0.8001900 secs] [Times: user=7.11 sys=0.00, real=0.80 secs] 

JVM 옵션

-Xms4096m 
-Xmx4096m 
-Xmn1600m 
-XX:PermSize=128M 
-XX:MaxPermSize=256M 
-XX:+PrintGCDetails 
-verbose:gc 
-XX:+PrintGCDetails 
-XX:+PrintGCTimeStamps 
-XX:+PrintGCDateStamps 
-XX:-HeapDumpOnOutOfMemoryError 

자주 전체 GC가 발생하더라도 ParOldGen 플러스 ParOldGen Xmx4096m보다 낮다. 누군가 나를 위해 그것을 분석 할 수 있습니까? 이 상황을 최적화하는 방법?

+0

Java 8 이상을 사용해야하며 GC 이유가 인쇄됩니다. 남은 힙 용량으로는 큰 할당 요청을 처리 할 수 ​​없다고 생각됩니다. – the8472

답변

1

GC 기록을 보면 이전 공간에 직접 할당 한 것입니다. 오래된 공간이 고갈되면 전체 GC가 트리거됩니다 (여유 공간이 있음에도 불구하고). 이전 공간에서의 직접 할당은 오브젝트 크기에 따라 남은 Eden 크기 (힙 기하학의 경우 약 300 MiB)를 초과 할 수 있습니다.

  • 당신이 큰 개체를 할당하는 제공

  • 이러한 개체 (하지 않는 한 단명 (각 GC의 회복 ~ 2 GIB)

나는 당신의 모든 GC 튜닝 전략을 제안 할 수있다 힙 크기를 크게 늘릴 준비가되었습니다).

할당되는 거대한 개체의 성격을 조사하는 것이 좋습니다. 힙 덤프 또는 Mission Control ("TLAB 외부 할당"참조)이 도움이됩니다.

+0

Full GC 경우 주기적으로 hprof 2 진 형식으로 Java 힙을 덤프 한 후. 마지막으로 우리는 거대한 ArrayList가 로직 실수로 인해 짧은 주기로 자주 할당된다는 것을 알았습니다. 도움을 청합니다! – Kay