티스토리 뷰

 

운영중이던 작은 서비스에서 그동안 없던 힙덤프가 생성되었다며 분석을 해 볼 기회가 생겼다. 관련 툴을 다운받고 어떻게 힙덤프파일을 보는지 간단히 기록해보고자 한다.

 

Heap Dump 분석하기

생성된 Heap Dump를 Eclipse Memory Analyzer(MAT) 툴을 이용하여 분석할 수 있다.

다운로드 받은 후 MemoryAnalyzer.exe 파일을 실행한다.

그런데 MAT를 실행하니 아래와 같은 오류가 발생했다.

JVM 버전 1.8.0_181은이 제품에 적합하지 않습니다. 버전 : 17 이상이 필요합니다.

이런 이야기이다.

실행 버전을 충족시키기 위해 아래링크에서 jdk 17을 다운받고

Download the Latest Java LTS Free

 

Download the Latest Java LTS Free

Subscribe to Java SE and get the most comprehensive Java support available, with 24/7 global access to the experts.

www.oracle.com

 

MAT가 설치된 곳에 ini 파일을 열어 기동할 참고할 자바버전을 명시하여 수정해주면 된다.

-vm
D:\\DevJava\\Java\\jdk-17.0.9\\bin

 

이렇게 자바 17이 설치된 \bin까지의 경로를 잡아주고 실행하면 MAT가 정상적으로 실행된다.

위 사진에서 Open a Heap Dump 버튼을 클릭하여 진행하면 된다.

jmap으로 얻은 Heap Dump 파일 혹은 OOM이 발생하여 자동 생성된 Heap Dump 파일을 지정한다. 나는 운영중인 서비스에서 OOM이 발생하여 자동 생성된 Heap Dump를 분석하려고 한다.

이때 주의할 점이 MAT 툴이 할당할 수 있는 메모리의 크기가 분석하려는 Heap Dump 크기보다 커야 한다. 따라서 위에서 압축 해제한 루트 디렉토리에서 MemoryAnalyzer.ini 파일을 실행하여 Xmx 크기를 적절하게 조절한다. 아래와 같이 세팅하면 된다.

MemoryAnalyzer.exe 를 실행한 후, File — Open Heap Dump를 선택하여 heap 덤프 파일을 열어보자.

Leak Suspects Report 선택 후, Finish


성공적으로 Heap Dump 분석이 끝나면 다음과 같이 원 그래프 및 다양한 기능이 나타난다.


아래 Problem Suspect의 Detail을 클릭하여Biggest Instances, Reference Pattern 등 상세한 내역을 확인 할 수있다.


incoming은 해당 object를 참조하는 object, outgoing은 해당 object가 참조하고 있는 object를 포함하여 보여준다.

 



메모리 누수(Memory Leak) 분석

1번 박스를 보면 보통 어떤 한 부분이 거의 모든 부분을 차지하고 있는 것으로 보일 때가 있다. 하지만 뭐 하나 큰 비율을 차지하고 있는부분은 보이지 않았다.

노란색 배경의 2번 박스를 보면 이 메모리 누수의 유력한 요인을 순위대로 보여준다.

이후 3번 박스를 보면 여기에서 2번에서 문제가 된 소스에 관한 정보를 키워드로 알려주고 Details를 통해 상세 내역 확인이 가능하다.

결론적으로, 어떤 큰 원인을 찾지 못하고 업체에 문의하였으나 역시 같은 답변을 받았다. 모르겠다는 답변과 로그를 확인해봐야겠다는 답변이었으며 원래 그 정도 크기는 떨어질 크기도 아니라고 전달받았다. 원인을 알아내지 못한 채 힙 덤프 분석은 이렇게 종료가 되었다.

그래도 이번 기회를 통해 힙 덤프를 왜 생성하고 관리해야 하며, 어떻게 분석해야 하는지 조금이나마 경험해보았고, 메모리 관리의 중요성에 대해 다시 한번 짚고 넘어간다.

'ALL > Java' 카테고리의 다른 글

[Java] Socket 소켓통신 / Endian(빅엔디안, 리틀엔디안)  (1) 2023.11.27
[Java] Thread  (0) 2023.11.27
Java 현재 시간 구하기 코드  (0) 2022.11.27
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
글 보관함