대메뉴 바로가기 본문 바로가기

데이터 기술 자료

데이터 기술 자료 상세보기
제목 OOME의 종류 및 분석
등록일 조회수 7098
첨부파일  

OOME의 종류 및 분석

㈜엑셈 컨설팅본부 /APM팀 전 황민



개요

인터맥스 지원을 하다 보면 OOM E 관련 이슈를 자주 접하게 된다 . OOM E 은 Out Of Memory Error 란 말 그대로 메모리가 부족하여 발생한 에러로 종류 및 원인은 다양하다 . 이에 OOME 에 대한 기본적인 이해 및 패턴 별 분석 방법에 대해 알아 보고자 한다 .


OOME 란

java. lang.OutOfMemoryError 는 java.lang.VirtualMachineError 의 Subclass 로 JVM 이 Heap Memor y 에 더 이상 Object 를 할당 할 수 없을 때 발생한다 .


OOME 의 종류

O OME 에러는 주로 아래와 같이 2 개의 에러로 구분 된다 .

▶ Java.lang.OutOfMemoryError : Java heap space
▶ Java.lang.OutOfMem oryError : PermGen space

OOME 의 원인 및 해결 방법

Java.lang.OutOfMemoryError : Java heap space

Java.lang.OutOfMemoryError : java heap space 는 Java 의 Heap Memory 공간이 부족하 여 발생한다 . 공간 부족의 원인으로는 Heap Memory 의 크기가 작아서 발생하는 경우와 Applic a tion 로직의 문제로 발생하는 경우가 있다 .

Java.lang.Out OfMemoryError : java heap space 를 해결하기 위한 가장 쉬운 방법으로는 . Xmx 옵션을 사용하여 Heap Memory 의 크기를 증가시키는 방법이 있다 . 하지만 이는 GC Time 의 증가를 동반하기 때문에 충분한 사전 테스트가 필요하다 .

Java.lang.OutOfMemoryError : java heap space 를 해결하 는 두 번째 방법으로는 Application 프로파일링이 있다 . OOM E 가 발생한 시점에 생성된 Heap D ump 분석을 기반으로 쓸데 없이 많은 Memory 를 사용하거나 Memory Leak 을 유발하는 로직을 수정해야 한다 .


Java.lang.OutOfMemoryError : PermGen space

Java Heap Memory 영역 중 P ermanent 영역은 String pool , Class Method 와 관련된 각종 Meta Data 등 을 저장하는 용도로 사용된다 . 따라서 JVM 기동 시 로딩되는 Class 또는 String 의 수가 많다면 Java.l ang.OutOfMemoryError : PermGen space 의 원인이 된다 . 또한 C lassloader Leak 에 의해 OOME 가 발생될 수 있다 .

Java.lang.OutOfMemoryError : PermGen space 을 해결하기 위한 방법으로는 JVM Option 튜닝이 있다 . 하지만 Permanent 영역은 Heap 영역과는 달리 일반 비즈니스 프로그램으로 핸들 링 할 수 없기 때문에 JVM Option 튜닝으로도 해결이 되지 않는다면 WAS 혹은 JDK 버그를 의 심해 봐야 한다 .


OOME 분석 관련 툴

V isualVM

VisualVM 은 JDK 6 부터 제공되는 툴로 실행중인 JVM 에 대하여 자세한 정보를 GUI 로 제공하 기 때문에 기존 다른 툴보다 접근성이 좋다 . 제공 되는 기능으로는 Thread 모니터링 , JVM Memory 모니터링 , Thread Dump 및 Heap Dump 생성 등이 있다 .


Jmap

Jmap 은 JDK 5 부터 제공되는 툴로 Heap Dump 를 생성할 때 사용되며 Visual VM 과는 달리 Command Line 기반 프로그램이다 .


인터넷Eclipse memory analyzer

Eclipse memory analyzer 는 줄여서 MAT 로 불리 우며 Eclipse 기반의 Heap memory 분석 툴이다 . MAT 는 사용자 편의를 위해 H eap D ump 를 분석하여 각종 도표로 정리하여 보여준다 . IBM 기반 Heap D ump 분석은 기본적으로 제공되지 않지만 Plug - In 을 설치하면 분석 가능 하 다 .


결론

OO ME 분석 능력은 인터 맥스 엔지니어로서 필수 항목 중 하나이다 . 하지만 단순히 OOME 별 분 석 방법만으로 원활한 O OME 분석이 어렵다 . OOME 분석의 기반이 되는 J ava H eap M emory 구조 , GC 옵션 별 특징 및 로그 분석 , MAT 사용 스킬 등에 대한 이해가 없다면 난관에 부딪힐 것이다 . 하지만 위에 언급된 내용을 기반으로 실제로 Site 및 사내 테스트 중 발생한 Heap Dump 분석을 진행해 본다면 OOME 관련 이슈에 원활하게 대응할 수 있는 인터맥스 엔 지니어 가 될 것이다 .



출처 : (주)엑셈

제공 : DB포탈사이트 DBguide.net