본문 바로가기
IT/JAVA

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

by 최고영회 2020. 12. 1.
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

'IT > JAVA' 카테고리의 다른 글

Netty(2) - Bootstrap  (0) 2021.02.04
Netty 란  (0) 2021.02.02
webclient - bodyToMono 예외 처리  (0) 2020.11.20
Synchronized 잘 알고 사용하기  (0) 2020.11.05
ServletFilter 를 이용한 Download File 분석  (0) 2020.09.29