IT/JAVA

jmap 오류 발생할 경우 - Unable to open socket file, HotSpot VM not loaded

최고영회 2020. 12. 1. 17:39
728x90
반응형
SMALL

메모리 누수나 모듈의 문제 분석을 위해

thread dump, heap dump 등을 위해 jmap, kill -3 등을 이용하는데 

다음과 같은 오류가 발생하는 경우가 있다. 

Exception in thread "main" com.sun.tools.attach.AttachNotSupportedException: Unable to open socket file ....
target process 43121 doesn't respond within 10500ms or HotSpot VM not loaded

열심히 구글링 하면 java process 의 실행 계정과 현재 jmap, jstack 을 실행하는 계정이 다른것이니 

sudo -u 계정명 jmap... 하라는 글도 있고 

 

O.S 바이너리 덤프를 뜨고 해당 덤프로부터 heap dump를 추출하라는 의견도 있다. 

gcore -o core.dump [pid] 후 jmap -dump:format=b,file=dump.hprof [자바경로][바이너리덤프]

 

정확히는 모르겠으나 openjdk 에서 jmap 은 jhsdb 를 이용해서 실행하는 것으로 변경되었고 이것을 이용하면 된다. 

옵션을 보면 --heap 을 통해 현재 heap 상태를 출력해서 볼수도 있다.

--binaryheap 이라는 옵션을 통해 hprof binary format 의 dump를 생성시킬 수 있다는 걸 확인할 수 있다. 

 

결국 ... 이렇게 하면 된다. 

jhsdb jmap --binaryheap --dumpfile dump.hprof --pid 43121
728x90
반응형
LIST