0

내 프로덕션 응용 프로그램 중 하나에서 Oracle JRockit을 JVM으로 사용하고 있습니다. 보조 GC 빈도는 매우 높습니다 (약 40 초마다). 그러나 때때로 Full GC가 자주 발생하는 것을 볼 수 있으며 그 시간 동안 Minor GC는 무시할 수있는 바이트를 회수합니다. 우리 애플리케이션이 1 초 안에 응답해야하고 완전한 GC 멈춤이 1 초 이상 걸리므로 애플리케이션 애플리케이션 오류가 발생합니다.빈 GC GC & Zero Reclaim 중 MInor GC

GC 기록에서 약간의 관찰이 있습니다. 1- 마이너 GC는 특정 기간 이외의 기간 동안 바이트를 회수 할 수 없습니다. 마이너 GC는 보육 영역의 거의 95-99 %를 회수합니다 (보관 영역 제외). 2 내가 관찰하고 비상 병렬 스윕은 문제의 주파수가 2기가바이트 및 감소

내 힙 구성

Heap   : 10 GB 
Nursery   : 1GB 
GC    : gencon 
Keeparea  : 50% 
CompactionRatio : 10% 
gcTrigger  : 40% 

우리는 2기가바이트 & 3기가바이트에 보육 크기로 변경 시도되는이 다짐 단계에서 요청 3기가바이트

어떤 도움을 증가 왜이 문제가 발생하거나하는 방법이 더

Upda을 조사하는 방법 te 1 :

GC 용 memdbg 모듈을 사용할 수 있으며 보육 파트가 기본 제한 인 10000보다 높기 때문에 Full GC가 트리거되지만 OC도 보육원에 많은 수의 부품을 남겨두고 있음을 알 수 있습니다. 이 문제의 지침은

+0

나는 JRockit에 관한 나의 경험이 다소 약하다. 그러나 내가 너라면, 나는 다른 기억 영역의 채우기 등급에 대해 더 잘 이해하려고 노력할 것이다. JRockit의 온보드 툴 (HotSpot과 함께 JConsole을 제안 할 것임)을 알지 못해서, 15 일간의 평가판을 제공하는 YourKit을 지적 할 수 있습니다.이 테스트는 메모리 영역이 과밀해진 느낌을 받기에 충분합니다. – Jonathan

답변

0

문제의 심각성을 해결하기 위해 자세한 memdbg 모듈을 활성화했습니다.이 모듈은 왜 GC가 트리거되었는지에 대한 정보를 제공했습니다. 가득 찬 GC는 이유가있는 trigerring이었습니다. 할당 요청이 실패했습니다. 오라클 설명서에 따라 힙의 보육 부분이 조각화되어 각 하위 GC 동안 보육의 전체 부분을 검사하기 위해 R28.2.5의 검사를 추가하고 정의 된 것보다 많은 경우 제한 (기본값은 10K) 경미한 GC가 중단되고 전체 GC가 원인 할당 요청이 실패하여 트리거됩니다.

이 문제를 해결하려면이 매개 변수를 추가하여이 검사를 사용하지 않도록 설정 한 다음 시스템이 정상적으로 작동하는지 확인하십시오.

-XXNurseryPartsLimits=0