2024년 3월 14일 목요일

힙 덤프 분석을 위한 Eclipse Memory Analyzer tool 사용방법 정리

 출처: 1883568-How to self analyze a Heap Dump using MAT


https://eclipse.dev/mat/ 에서 Memory Analyzer 1.15.0 Release 다운로드

처음 실행 할때 아래와 같은 메시지가 확인되면 실행 안됨
Version 1.8_201 of the JVM is not suiable for this product. Version: 17 or greater is required
현재 내 컴퓨터에 설치된 JVM버전은 맞지 않은것 같음

툴을 설치한 폴더안에 MemoryAnalyzer.ini 파일내용을 수정하여 해결할수 있다고 하는데
-Dosgi.requiredJavaVersion=1.8을 추가

추가 후 실행해보면 로딩 로고가 나오지만 안됨
An error has occurred. See the log file [로그파일경로]/1710314750556.log
어느 사이트에서는 .ini파일내용에 javaw.exe 자바를 실행하는 가상머신 경로가 없어서 그런다고 하여 추가해봄
-vm
[JDK설치경로]/bin/javaw.exe
동일함

1.13버젼에서는 Version: 11이 필요하다고 하는데 1.10에서는 실행이 됨

이클립스외에 MAT관련 SAP확장패키지 설치

위 노츠에 첨부된 파일 두개를 다운로드하여 features,plugins를 MAT에 추가('왜 필요한지 모르겠음')

Heap Dump 다운로드

SAP PO의 NWA > Troubleshooting > Advanced Troubleshooting > Heap Dump Analysis에서 다운로드 가능하고 BC통해 요청해서 PO디렉토리안에서 받아도 되는데 NWDS폴더에 HeapDumpSample.hprof 파일이 존재하여 이걸로 테스트

Eclipse Memory Analyzer > Open Heap Dump... 에서 .hprof파일 불러오기

힙덤프파일을 불러오면 관련 파일들이 여러개 생성됨 그리고 아래 메뉴 확인됨

Leak Suspects Report → 힙 덤프에서 누수 의심항목을 자동으로 확인
  • Overview: 덤프크기,클래스와 객체 및 클래스 로더 수가 표시
  • Histogram: 클래스별 인스턴스 수를 나열
    • Shallow Heap는 오브젝트가 단독으로 차지 하는 메모리
    • Retained heap는 해당 오브젝트 연결된 모든 객체 포함한 메모리 점유량
  • Dominator Tree: 가장 큰 개체와 그 유지하는 항목을 나열
    • 힘 덤프에서 가장 큰 객체를 표시 
  • Top Consumers: 큰 객체를 클래스별 및 패키지별로 그룹화
  • Duplicate Classes: 여러 클래스 로더가 로드한 클래스 감지
  • Leak Suspects: 누수되는 항목에 대한 개요
  • Top Components: 전체 힙의 1%보다 큰 컴포넌트 나열

Component Report → 메모리 문제 의심되는 오브젝트 집합을 분석

Re-open previously run reports → 기존 보고서 저장

"솔직히 봐도 잘 모르겠음"

이전에 작성한 블로그 글

댓글 없음:

댓글 쓰기