2012-11-27 2 views
1

전체 GC가 발생했을 때 이전과 힙 크기는 말아야 후 사이의 이러한 작은 차이가 왜-verbose 가비지 컬렉터 해석

34.098: [GC 197635K->91639K(236480K), 0.0356348 secs] 
37.139: [GC 217911K->100951K(239936K), 0.0541968 secs] 
37.194: [Full GC 100951K->97239K(304704K), 0.3325776 secs] 
38.602: [GC 214271K->97547K(285568K), 0.0488937 secs] 
41.395: [GC 220811K->111699K(304512K), 0.0334592 secs] 
42.734: [GC 235155K->115815K(304384K), 0.0208743 secs] 
43.722: [GC 239271K->115801K(303872K), 0.0166861 secs] 
44.373: [GC 241049K->118266K(304128K), 0.0106151 secs 

누군가가 설명 할 수 나는 보스 5.1을 실행 그리고 난이 GC에게 데이터를 얻을 수 풀 GC 일 때 더 커야합니다. 전체 GC가 "정상적인"GC가되기 전에이 두 라인의 타임 스탬프가 매우 가깝다는 것을 알아 차렸을 때, 나는이 두 라인의 타임 스탬프가 매우 가깝다는 것을 알아 냈다.

답변

0

당신이 보는 것은 젊은/에덴의 공간과 오래된 공간. 이 두 공간은 서로 다른 종류의 콜렉터를 사용합니다. 왜냐하면 해당 영역의 오브젝트가 다른 특성을 가지기 때문입니다. 일반적으로 Full GC는 느리고 VM을 정지시키기 때문에 가장 큰 문제입니다. 다행스럽게도 아직 큰 문제는 없지만 문제는 그 원인이 무엇인지에 대한 것입니다.

불행히도 말할 수 없습니다. 자세히 알고 싶으면 스위치를 활성화해야합니다. -XX:+PrintGCDetails

그러나 우리는 추측 할 수 있습니다. 정확하게 지적하자면 힙은 가득 차 있지 않으며 (300MB 중 100MB) 많은 양 (30MB)을 수집하지 않습니다. 그래서이 GC는 System.GC()을 호출 한 것으로 추측됩니다. 오류가 발생하지 않도록하려면 - XX:+DisableExplicitGC을 사용하거나 실제로 수행 한 코드를 찾아서 제거해야합니다.

+0

저는 애플 리케이션 서버를 시작할 때 Full GC를 사용하는 것이 정상적인 것인지 궁금합니다. 왜냐하면 서버가 다 되었기 때문에 거기에서 전체 컬렉션을 가지고 있지 않기 때문입니다. – Mata

관련 문제