Memory Analyzer

jmap 으로 생성한 Heap Dump 파일을 열어서 분석할 수 있는 도구로는 Eclipse Memory Analyzer (MAT) 가 있다. 메모리 누수 의심 내역을 보고서 형태로 보여줘서 좋다. 다른 도구로는 VisualVM 이라는 것도 있다.

Find PIDs:

  • jps

Heap Dump:

  • jmap -dump:format=b,file=HEAP_DUMP_OUTPUT_FILE_NAME.hprof PID
    • 힙에 있는 모든 객체 Dump
  • jmap -dump:live,format=b,file=HEAP_DUMP_OUTPUT_FILE_NAME.hprof PID
    • 힙에 있는 Live 객체만 Dump
  • 메모리 부족시 Heap Dump 뜨도록 자동 설정
    • -XX:+HeapDumpOnOutOfMemoryError \
      -XX:HeapDumpPath=./jvm.hprof
      

GC Monitoring:

  • jstat -gc -h10 -t PID 64305
    • 10줄마다 헤더 출력, 타임스탬프 출력, 10000밀리초마다 출력

Thread Dump:

Eclipse Memory Analyzer (MAT) Guides

  1. Heap Dump
  2. Open -> File 에서 Heap Dump 파일 선택
  3. Getting Started 창 나오면 Cancel (필요한 것 클릭해도 됨, 메모리 누수 분석 시 Leak Suspects Report 클릭)

Leak Suspects System Overviews:

소스에 문제가 있다면 문제가 되는 곳의 Location 까지 알려준다.

Prevention Memory Leak

Preventions:

Knowhow: