OOME-Out Of Memory Error(3. 힙 덤프)

0

JAVA

목록 보기
18/18
post-thumbnail

지금까지 OOME가 발생 가능한 케이스와 발생했을 떄의 heap 지표를 확인했습니다.
이번 포스팅은 OOME를 대비하기 위해 필요한 프로파일링 도구를 소개하고자 합니다.
프로파일링 도구는 여러개가 존재하지만 우선은 제가 사용했던 방법을 위주로 작성하도록 하겠습니다.

Heap Dump 생성

  1. 힙 덤프를 뜰 자바 어플리케이션 프로세스의 PID 확인

    EX) ps aux | grep java

  2. jmap 툴 사용

    예시: 힘 덤프파일은 heap.dump라 설정하고 PID가 777이다
    jmap -dump:format=b,file=heap.dump 777

jmap을 활용해서 heap dump를 사용할 때 주의할 점은 가급적 실시간으로 트래픽을 처리해야 하는 프로세스에 사용하는 것에 대해 조심해야 할 필요가 있습니다. heap dump를 뜨게 되면 프로세스가 일시적으로 중지될 수 있습니다.


Eclipse MAT(Memory Analyzer)

저 같은 경우 덤프 뜬 힙 파일을 분석할 툴로 이클립스에서 지원하는 MAT를 사용했습니다.
MAT 같은 경우 이클립스 marketplace에서 설치 가능합니다.

설치가 완료되면 Open Perspective 창에서 Memory Analysis 선택을 합니다.

Memory Analysis 선택을 하면 아래 사진처럼 이클립스 창이 바뀝니다.

다음으로 File > Open Heap Dump를 클릭 하신 뒤 jmap을 통해 덤프 받은 힙 파일을 열어 주시면 아래처럼 화면이 나오게 됩니다.

해당 화면의 경우 메모리 릭이 의심되는 부분을 원형 차트로 표현하였고 스크롤을 살짝 내리시면 아래 창 처럼 Problem Suspect 부분을 확인하실 수 있으십니다.
이곳에서 Details를 클릭하시어 본격적으로 본인이 개발한 프로젝트의 프로파일링을 시작하실 수 있습니다.

MAT에 대한 자세한 사용법은 아래 링크로 첨부해 드립니다.
https://www.eclipse.org/mat/about/screenshots.php

profile
컴퓨터공학과 + 실무 = 4 + N = 모르는거 ∞ ...

0개의 댓글