OOM이란?

LJM·2023년 9월 8일
1

Java

목록 보기
23/33

OOM(Out of Memory)은 시스템이 더 이상 메모리를 할당할 수 없을 때 발생하는 오류나 상태를 의미합니다. 이는 일반적으로 두 가지 주요 상황에서 발생할 수 있습니다:

  1. 힙 메모리 부족
    자바에서 가장 일반적으로 발생하는 OOM 유형입니다.
    객체를 생성할 때 충분한 힙 메모리가 없으면 java.lang.OutOfMemoryError가 발생합니다.
    이 문제는 가비지 컬렉션을 통해 해결될 수 있지만, 가비지 컬렉션으로 회수할 수 없는 메모리가 계속 증가하면 OOM이 발생할 수 있습니다.
  2. 스택 메모리 부족
    메서드 호출과 로컬 변수에 대한 메모리가 스택에 저장됩니다.
    재귀 호출이 너무 깊어지거나 스택 프레임이 너무 커지면 스택 메모리가 부족해질 수 있습니다.
    이 경우에도 java.lang.OutOfMemoryError가 발생합니다.
    해결 방법
    코드 최적화: 불필요한 객체 생성을 피하고, 메모리 누수 가능성을 검토합니다.
    JVM 옵션 조정: 힙 메모리나 스택 메모리의 크기를 조정할 수 있습니다. 예를 들어, -Xmx 옵션으로 최대 힙 크기를 설정할 수 있습니다.
    프로파일링: 메모리 사용 패턴을 분석하여 문제의 원인을 찾습니다.
    OOM은 시스템 리소스가 한정되어 있기 때문에 발생하며, 이를 해결하기 위해서는 코드의 최적화나 시스템 설정의 조정이 필요할 수 있습니다.
profile
게임개발자 백엔드개발자

0개의 댓글