Eclipse Memory Analyzer (MAT)

jinnnny·2023년 6월 30일

Tools

목록 보기
1/2

개발을 하다보면 종종 OutOfMemory(OOM) 에러를 만나게 됩니다.
메모리 누수 관련 문제는 코드 에러와는 달라서 찾기가 매우 난감한 경우가 많습니다.
이러한 메모리 누수 관련 문제를 해결하기 위한 분석 기능을 제공하는 무료 툴이 있습니다.
바로 Eclipse MAT(Memory Analyzer)(MAT)입니다.

Eclipse Memory Analyzer (MAT)

힙 메모리의 상황을 파악하게 해주어 메모리 누수 현상과 필요없는 메모리 할당을 감지할 수 있도록 도와줍니다.
또한 자동으로 보고서를 작성하여 어떤 객체들이 메모리 누수를 일으키는지에 대한 추측을 해주는 기능을 제공합니다. 
MAT을 설치하려면 MAT 다운로드 페이지에서 분석할 OS속성에 맞도록 MAT 파일을 받으시면 됩니다.

1. How to use MAT

  1. file -> Open Heap Dump -> 생성된 heapdump (확장자 .hprof) 파일을 불러온다.
  2. Inspector 창에서는 선택된 객체의 내용을 볼 수 있습니다.
    • 해당 객체의 클래스명과 패키지 명 그리고 해당 객체가 가지고 있었던 변수의 내용을 살펴볼 수 있습니다.

2. 유용한 기능들

MAT에서 가장 중요하게 살펴볼 기능이라고 한다면 Leak suspoect report와 Dominator tree라고 볼 수 있습니다.
Leak suspect와 Dominator tree 둘 다 가장 메모리를 많이 차지하고 있는 객체에 대한 정보를 제공합니다.

1. Leak suspect

  • Leak suspect는 가장 큰 용량을 차지하고 있는 객체들을 좀 더 세분된 파이 도표로 보여줍니다.
  • 가장 많은 퍼센트를 차지하고 있는 객체는 OOM의 주 범인이라고 생각할 근거가 됩니다.
  • 해당 객체에 대한 더 자세한 정보를 얻고 싶다면 Details을 클릭하면 됩니다.

2. Dominator tree

  • Dominator tree를 띄우면 현재 덤프 된 메모리 스냅 샷 중 가장 큰 용량을 차지하고 있는 객체 순으로 정렬하여 보여줍니다.
  • Leak suspect와 비슷해 보이지만 더 구체적인 정보를 제공한다는 점이 다릅니다.
  • 따라서 Leak suspect로 현 상황에 대한 힌트를 얻은 후 Dominator tree에서 디테일하게 살펴보는 것이 시간을 절약하는 방법입니다.

참고 (https://spoqa.github.io/2012/02/06/eclipse-mat.html)

0개의 댓글