2016-11-23 10 views
0

아래 프로세스를 수행했지만 생성 된 덤프를 분석 할 수 없습니다.Java 프로세스에서 힙 덤프를 수집하여 메모리 누수를 디버그하십시오.

  1. 내가 사용하는 리눅스에서 실행되는 Java 프로세스에서 힙 덤프를 얻기 위해 노력했다 "jmap는 -F -dump : 형식 = B, 파일 =/tmp를/test.hprof"스팬 후
  2. Ctrl + C 60 초
  3. 위의 단계에서 생성 된 힙 덤프는 Eclipse MAT (Memory Analyzer Tool)를 사용하여 시작되지만 다음 오류가 표시됩니다.

" '/users/sobhan/Test.hprof'에서 힙 덤프 구문 분석 중 내부 오류가 발생했습니다. java.lang.NullPointerException

추 신 : VisualVM, IBM 힙 분석기와 같은 다른 분석기 도구를 사용해 보았습니다. 결과는 같습니다. 제 생각에는 힙 덤프가 손상된 것 같습니다 (Ctrl + C를 사용하면 여기에 결함이 있습니까?). 그렇다면 올바른 방법을 제안하여 'jmap'을 정상적으로 종료하십시오.

미리 감사드립니다.

+0

'Ctrl + C를 60 초 간격으로 실행하십시오.'-> 아무 도구도 잘라진 힙 덤프를 구문 분석 할 수 없습니다. –

+0

특정 시간 후에 jmap을 정상적으로 종료하는 방법을 제안 할 수는 있습니까 @IngoKegel – Sobhan

+0

아니요, 총리를 완료해야한다. –

답변

0

힙 덤프가 완료 될 때까지 기다려야합니다. 힙의 크기에 따라 몇 초에서 몇 분이 걸릴 수 있습니다. 최소한 한 번은 나를 위해 20 분이 걸렸습니다 (정확하게 기억한다면 덤프 크기는 약 10G였습니다). "-dump : live"옵션을 시도해 볼 수 있습니다.이 옵션은 실제 오브젝트와 쓰레기를 덤프합니다.

jmap -F -dump:live,format=b,file=<file_name.hprof> <rdu_process_id> 

그러나 this issue도 발생할 수 있습니다.