JunsuLime / spring-cloud-native-explorer

Spring cloud explorer
1 stars 0 forks source link

JVM heap dump 의 분석 #30

Closed JunsuLime closed 3 years ago

JunsuLime commented 3 years ago

목적

참고자료

프로세스

  1. heap dump 파일을 추출한다.
  2. 이를 분석기로 분석하자.

(어떻게 추출할것인가? / 어떤 분석툴을 활용할 것인가?)

JunsuLime commented 3 years ago

Java process pid 취득

ps -ef | grep {application_name} 혹은 jps 를 통해 process id 를 얻자.

jmap 을 이용한 heap dump bin 파일 추출

jmap -dump:format=b,file=파일명<PID>

jhat 을 이용한 heap dump 분석

jhat -J-mx2048m 파일명 을 실행 localhost:7000 에서 확인가능하다.

(jhat 은 java9 이후로 사라진듯? 확인 마저 해보자) 음 근데 이걸로 보느니!!!!! 다른 방법이 있따!! 이걸로 켜보니 내가 이해 못할 정보들밖에 없다.

Intellij 의 분석 툴을 이용해서 보자

View > Tool Windows > Profiler 에서 heap dump 한 memory snapshot 파일을 가져와서 본다.

*.hprof 파일

용어참고 Shallow heap : 하나의 객체가 소비하는 메모리 용량. 객체 레퍼런스는 하나당 아키텍처에 따라 32bits(혹은 62bits)를 차지한다. Ratained heap : 해당 객체의 모든 인스턴스를 GC했을 때 확보할 수 있는 메모리 총량. (https://kwonnam.pe.kr/wiki/java/memory)

https://www.jetbrains.com/help/idea/analyze-hprof-memory-snapshots.html

JunsuLime commented 3 years ago

참고로 java program 실행 시 OOM 발생하면 자동으로 heapdump 를 남길수 있게 할 수 있다.

JunsuLime commented 3 years ago
JunsuLime commented 3 years ago

써보면서 느낀점

JunsuLime commented 2 years ago

=========================== 요약

  1. jps 를 통한 PID 추출 jps

  2. jmap 을 이용한 heapdump jmap -dump:format=b,file={OUTPUT_FILE} {PID}