메모리 누수가 자주 전체 GC가 발생

1, 문제 발견

       프로 메테우스 경보 사용자 중심의 서비스 올드 과도한 GC, 조사 필요

2, 문제 분석

      4 개 개의 생산 서비스 노드의 사용자 중심 배치는 2g에 전체 힙 사이즈는, 차세대의 크기는 1g으로 설정된다. 경보는 노드 뷰 전체를 실제로 시간 이내에 약 11시 20분 약 10 : 30 ~, 노드를 찾을 수 5를 가지고있어서, 네 개의 노드를보고 GC, 이것은 매우 이례적인 일이다.

도 3는 GC를 사용하여 분석 GCViewer 로그

       알 수있는 바와 같이, 전체 메모리 1g 세, 거의 모든 점령하고, 전체 GC 이후, 많은 메모리 복구를하지 않았다, 그것은 메모리 누수가 분명하다. 메모리 누수의 기존 메모리 전체 GC의 새로운 세대, 당신은 업그레이드 시간을 업그레이드해야 특정 연령 대상이 될 것입니다,하지만 때마다 전체 GC 후, 많은 메모리가 복구되지 않았다 방법과, 충분하지 않습니다 발견, 메모리 공간 부족 세 원인이 있지만, 그것은 OOM으로 이어질하지 못했지만, 곧 다음에 그들은 전체 GC로 업그레이드해야합니다.

4, 힙 스냅 샷 파일을 덤프

       명령을 사용 jinfo -flag +HeapDumpBeforeFullGC 11752하고 jinfo -flag +HeapDumpAfterFullGC 11752후 메모리 스냅 샷을 덤프하고 전체 GC 전체 GC 힙 전에 (참고 : 덤프가 완료되면, 디스크 공간을 많이 차지합니다,이 두 개의 매개 변수, 또는 전체 GC가 발생하는 경우가 자주 자주 덤프를 닫아야합니다) 명령을 사용 jinfo -flag -HeapDumpBeforeFullGC 11752하고 jinfo -flag -HeapDumpAfterFullGC 11752종료 두 개의 매개 변수. 사실, 당신이 메모리 누수 때문에,이 두 가지 매개 변수를 추가 한 다음 전체 GC의 출현을 기다릴 필요가 없습니다 명령에 이렇게 직접 재활용 할 수없는 메모리 세 jmap -dump:format=b,file=before.hprof 11752
jmap -dump:live,format=b,file=after.hprof 11752힙 스냅 샷 파일을 덤프하는 것도 가능하다, 플러스 라이브 수단에만 저장 라이브 객체.

5 스냅 샷의 이클립스 MAT 분석

      분명히 당신은 개체 힙 메모리가되어 볼 수 있습니다 DoctorInvitePictureManagerImpl그것은 메모리 누수가 발생한다는 것입니다, 811.8M 점령했다. 나머지는 비즈니스 학생들이 코드의 문제를 해결해야 할 것입니다.

추천

출처www.cnblogs.com/cuizhiquan/p/11536827.html