JVM 힙 덤프(Heap Dump) 분석

eomprgrm·2023년 4월 19일
0

1. 힙 덤프 분석이란


힙 덤프 분석은 프로그램이 실행 중인 동안 힙(Heap) 영역에 할당된 객체의 메모리 상태를 분석하는 과정이다. 힙 덤프는 힙 영역에 있는 모든 객체의 정보를 이진 형태로 저장한 것으로, 일종의 메모리 스냅샷이라고 볼 수 있다.

2. 힙 덤프 분석이 필요한 상황


메모리 누수 (Memory Leak)

웹 어플리케이션이 실행되는 동안 할당된 객체가 메모리에서 제대로 해제되지 않아 메모리 누수(Memory Leak)가 발생하는 경우가 있다. 이러한 상황에서 사전에 조치하지 않는다면 Out Of Memory 에러가 뜰 수 있으므로 지속적인 모니터링을 통해 관리해야 하며 이러한 상황 발생 시 힙 덤프 분석이 필요하다.

java.lang.OutOfMemoryError: Java heap space

GC 오버헤드 한도 초과

JVM에서 가비지 컬렉션 작업이 너무 많이 발생하여 애플리케이션의 실행이 느려지거나 멈추게 되는 상황이다. 가비지 컬렉션은 자바에서 사용되지 않는 객체들을 메모리에서 정리하는 프로세스로, 메모리를 최적화하는 작업이다. 그러나 가비지 컬렉션이 너무 빈번하게 발생하거나 가비지 컬렉션에 소비되는 시간이 너무 많아지면, 애플리케이션의 실행 속도가 느려지고 결국 애플리케이션이 응답하지 않거나 멈추는 현상이 발생할 수 있다. JVM은 일정 시간 동안 가비지 컬렉션 작업에 사용되는 CPU 시간의 비율을 제한하고 있는데, 이를 GC Overhead limit이라고 한다. 이 제한을 초과하면 JVM은 해당 오류를 발생시킨다.

ava.lang.OutOfMemoryError: GC Overhead limit exceeded

3. 힙 덤프 분석


VisualVM 프로그램을 사용하였다. 다음은 VisualVM 프로그램 실행 화면이며, 실행 중인 웹 어플리케이션 PID(2396)을 더블클릭하여 상세 화면을 본 모습이다. Monitor 탭에서 전반적인 CPU 사용량, GC 현황 등을 확인할 수 있다.

다음은 Visual GC 탭을 통해서 JVM Heap 메모리 영역을 살펴본 모습이다.

Reference

https://www.youtube.com/watch?v=v1gb397uFC4&t=901s
http://honeymon.io/tech/2019/05/30/java-memory-leak-analysis.html
https://steady-coding.tistory.com/591

profile
오늘의 학습을 기록하는 공간

0개의 댓글