블로그 이름

[ERROR] Caused by: java.lang.OutOfMemoryError: Java heap space 본문

개발/오류

[ERROR] Caused by: java.lang.OutOfMemoryError: Java heap space

Hide 2025. 7. 31. 22:29

JAVA의 heap 메모리 부족 문제 발생

 

힙 메모리에 객체 저장 시 메모리 부족하여 발생하는 에러로 JVM이 더이상 객체를 할당할 수 없어 OutOfMemoryError를 던져 발생.

 

주요 원인은 아래와 같다고 한다.

1. 처리해야할 데이터의 양이 많을때 (대용량, 컬렉션 대용량 List,Map 등)

2. 메모리 누수, 객체 참조 유지로 가비지 컬렉션 처리 불가

3. JVM 힙 메모리 설정값이 적을때

 

-XX:+HeapDumpOnOutOfMemoryError JVM 옵션을 설정하면 에러 발생 시 힙 덤프를 남겨 문제 분석이 가능하다 하는데 나는 이슈 재발이 안되어 로그만 보고 원인을 분석해야 하는 상황이었고

 

 대충 로그 보고 어디:쯤에서 끊겼는지 확인해보니

특정 기능 데이터 조회가 안되는듯함

한 테이블 전체 조회 SELECT * FROM TESTTABLE 이었는데

DB 데이터 확인해보니 데이터 수량으로 객체 메모리 확인 시 DB 데이터  양이 대략 6G정도

JVM 힙 메모리 설정은 4GB로 적재할 수 없는 상황

 

불필요한 객체를 생성하지 않도록 전체 테이블을 조회하는 것이 아닌 키 값을 사용하여 조회 대상으로만 단건 조회하도록 변경 (이러면 DB 연결을 많이 하긴 함)

 

대용량 데이터를 한번에 List 에 담으려다가 발생하여 데이터를 나눠 처리하도록 개선 후 문제없이 동작을 확인