java

[java] 메모리 누수와 힙 덤프 분석

hs_seo 2019. 6. 5. 14:54

프로그래밍에서 메모리 누수현상(Memory Leak)은 프로그램이 필요하지 않은 메모리를 계속 점유하고 있는 현상입니다. 자바의 메모리 누수 현상은 이전글을 참고 바랍니다.

 

2019/07/02 - [개념] - [개념] 메모리 누수(Memory Leak) 현상

 

[개념] 메모리 누수(Memory Leak) 현상

프로그래밍에서 메모리 누수현상(Memory Leak)은 프로그램이 필요하지 않은 메모리를 계속 점유하고 있는 현상입니다. 자바의 메모리 누수 자바에서 메모리 누수는 더이상 사용하지 않는 객체가 가비지 컬렉션(GC)..

118k.tistory.com

힙 덤프 생성

메모리 누수 문제가 발생하면 JVM의 힙 덤프를 이용하여 메모리에 어떤 객체가 생성되어 있는지를 확인할 수 있습니다. JDK와 함께 제공되는 jmap 명령어를 이용하여 힙 덤프를 생성할 수 있습니다. 다음과 같이 입력하면 파일명으로 힙덤프 파일이 생성됩니다. PID는 jps나 ps 명령으로 확인할 수 있습니다. 

$ jmap -dump:file=[파일명] [PID]

힙 덤프 분석

힙 덤프를 분석하는 프로그램은 여러 벤더에서 제공하고 있습니다. 여기서는 오라클에서 제공하는 Java Visual VM과 이클립스의 Eclipse Memory Analyzer를 이용하는 방법을 알아보겠습니다.

 

  • Java Visual VM
    • 오라클 JDK와 함께 제공
    • jvisualvm 실행
    • 현재 실행중인 로컬 JVM의 상태 분석 가능

java visual vm

 

  • Eclipse Memory Analyzer
    • 이클리스에서 제공하는 힙 덤프 분석 도구
    • 다운로드 링크
    • 메모리 누수 분석을 위한 Leak Suspects 제공

 

참고

우아한 형제들: 도움이 될수도 있는 JVM memory leak 이야기
네이버: 하나의 메모리 누수를 잡기까지
자바스크립트에서 메모리 누수의 4가지 형태

반응형