WAS 엔지니어

[Heap Dump] 힙 덤프 개념 및 사용법(IBM analyzer & Memoryanalyzer) 본문

트러블슈팅

[Heap Dump] 힙 덤프 개념 및 사용법(IBM analyzer & Memoryanalyzer)

bluerainxx 2022. 9. 26. 13:09

 

 

 

Heap Dump

 

OOM 발생시 그때의 Heap Memory 상태 스냅샷을 확보할 수 있으며 .hprof 확장자의 heap dump 파일로 저장됨

 

-XX:HeapDumpOnOutOfMemoryError : OOM 발생 시 Heap dump 생성

-XX:HeapDumpPath : Heap dump 파일의 위치

 

 

 

OOM이 없더라도, 메모리 누수가 의심되거나 현재의 메모리 상태를 확인하고 싶을 때 jmap을 사용하여, 수동으로 Heap memeory 상태를 dump 파일로 저장할 수 있음

 

$ jmap -dump:format=b,file=${PATH}/[filename].hprof ${PID}   => 띄어쓰기 조심!

 

 

- Heap

동적으로 할당되어 사용할 수 있는 메모리 영역

주로 실행중에 생성되는 객체들이 저장되고, 실행 후 제거되는 영역

GC의 대상이 되는 메모리 영역

GC는 가비지 컬렉션을 통해 힙 영역에 있는 사용되지 않는(더이상 참조가 없는) 객체를 회수

 

- Memory Leak 메모리 누수

힙 영역에 있는 동적으로 할당된 객체가, 더 이상 사용되지 않음에도 불구하고 가비지 컬렉터에 의해 회수되지 않고 메모리에 남아있어서 자리만 차지하는 현상

메모리 누수가 쌓이면 메모리가 부족해져 OOM이 발생

가비지 컬렉터는 메모리 누수인지 모르고 메모리가 부족하니 계속 메모리 회수하려 GC 발생시킴. 이렇게 자주 일어나는 GC는 성능상 문제를 일으킴

 

- OOM

대부분 개발이 완료된 후 사용자 테스트 혹은 인수 단계에서 많이 발생. 개발환경에서 테스트하다가 사용자 환경으로 인수한 경우 많이 발생. 이럴때는 JVM Option을 조정하거나, 힙 덤프 파일의 분석을 통해 대응함

 

- JVM Option

자바의 최대 장점으로 JVM이 OS위에서 돌아가면서 자바 어플리케이션은 어떤 OS 위에서도 동작 할 수 있다. 하지만 동작만 할 뿐 최적화가 되어있는 것은 아니므로 JVM Option을 통해 최적화 하도록 옵션 제공함

 

- JVM Option 종류

Standard 표준 / Non-Standard 비표준 옵션으로 나뉨

표준 옵션은 JVM 벤더와 상관 없이 동일한 옵션 가지며, 비표준옵션은 주로 -X, -XX로 시작되며 힙메모리 사이즈와 같이 최적화를 위한 옵션들이 조재함. 각 옵션들은 오라클 홈페이지 참조

 

 

 

 

 

 

 

 

 


 

 

✅ 사전 준비

  • IBM Analayzer 파일 다운로드

https://www14.software.ibm.com/cgi-bin/weblap/lap.pl?popup=Y&la_formnum=&li_formnum=L-JHWG-85RF4Y&accepted_url=https://public.dhe.ibm.com/software/websphere/appserv/support/tools/HeapAnalyzer/ha457.jar 

 

LICENSE INFORMATION

LICENSE INFORMATION The Programs listed below are licensed under the following terms and conditions in addition to those of the International License Agreement for Non-Warranted Programs. Program Name: HeapAnalyzer V4 Program Number: Tool D/N: L-JHWG-85RF4

www14.software.ibm.com

 

 

  • MemoryAnalyzer 파일 다운로드

https://www.eclipse.org/mat/downloads.php

 

Eclipse Memory Analyzer Open Source Project | The Eclipse Foundation

The Eclipse Foundation - home to a global community, the Eclipse IDE, Jakarta EE and over 415 open source projects, including runtimes, tools and frameworks.

www.eclipse.org

 

 

  • XLauncher 설치 및 실행

https://sourceforge.net/projects/vcxsrv/

 

VcXsrv Windows X Server

Download VcXsrv Windows X Server for free. Windows X-server based on the xorg git sources (like xming or cygwin's xwin), but compiled with Visual C++ 2012 Express Edition. Source code can also be compiled with VS2008, VS2008 Express Edition and VS2010 Expr

sourceforge.net

 

 

 

 

 

 

 

 

 

 1. IBM Analayzer (리눅스 환경 실행)

 

1. 다운받은 ha45*.zip 파일을 FTP 툴을 사용해서 옮겨줌

2. $ unzip ha45*.zip

 

 

3. XLauncer 실행

4. 그 후,

 

$ export DISPLAY=192.168.56.1:0.0

 

$ java -Xmx4096m -jar ha456.jar

2048m으로 했을 때 에러나서 4096까지 늘려 줌 ==> ++ 힙덤프 파일보다 더 크게 늘려주는게 핵심 꼭 4g일 필요는 없음

 

 

 

이런 화면을 볼 수 있으며 heapdump 파일 분석할 수 있다.

 

 

 

 

 

 

 

 

 

 

 2. MemoryAnalyzer (윈도우 환경 실행)

 

1. 다운 받은 MemoryAnalyzer-1.10.0.20200225-win32.win32.x86_64.zip 압축해제

2. mat 폴더 생성됨

3. mat 폴더에 들어가면

 

이 있는데 먼저 MemoryAnalzuer.ini 편집필요

메모리를 늘려준후 저장(4096m로 늘려줬는데 이유는 그 이하에선 에러 발생함)

 

4. exe 파일 클릭

 

 

 

 

 

Finsh를 누르면 Welcome 화면이 뜨면서 사용가능

 

 

 

 

'트러블슈팅' 카테고리의 다른 글

[Log] 중요 로그 7가지  (0) 2022.10.11
[GC] IBM GCMV 설치  (0) 2022.10.11
Comments