본문 바로가기
[Error Handling]

😡 java.lang.OutOfMemoryError: Java heap space 해결 방법(Eclipse, IntelliJ)

by 팡펑퐁 2023. 5. 5.
728x90

🚨 Error :

회사에서 OJT 기간에 주어진 과제를 수행하던 중 만난 에러이다. 테스트 코드를 통해 외부 파일을 읽는 작업에서 계속 에러가 발생했다.

 


🤓 원인 :

 자바 힙 공간에 새로운 객체를 생성할 수 없는 경우에 발생한다고 한다. 현재 힙 크기(지정 혹은 기본)가 애플리케이션을 작동시키는 데에 충분하지 않거나, 생명주기가 긴 애플리케이션이 finalize를 과도하게 사용할 때 발생하는 에러이다.

 


🚒 해결 :

JVM 옵션에서 힙 옵션을 통해 jvm의 최소 힙사이즈와 최대 힙사이즈를 설정하는 방법이 있다.

 

사용 메모리 확인하는 방법

Eclipse의 경우

  • Preferences > General에서 Show heap status를 체크하여 사용 메모리를 오른쪽 하단에서 확인 가능하다.

 

IntelliJ의 경우

  • 쉬프트를 두 번 누르고 show Memory Indicator를 입력하여 ON으로 바꾸면 된다. eclipse와 마찬가지로 사용 메모리를 오른쪽 하단에서 확인 가능하다.

 

 

메모리 늘리기

Eclipse의 경우

  • eclipserk 저장된 폴더에 들어가 eclipse.ini 파일에 들어가면 Xms와 Xmx가 나오는데 이 값을 수정하면 된다. Xms는 힙 영역의 시작 크기를 나타내고, Xmx는 힙 영역의 최대 크기를 나타낸다.

 

IntelliJ의 경우

  • Help > Edit Custom Vm Options... 에 들어가 eclipse의 경우와 똑같이 Xms와 Xmx의 값을 수정해 주면 된다.

 

 

🤔 의문점 :

 Xms와 Xmx의 값이 어느 정도까지 올려도 되는지, 적정값이 얼마인지 잘 모르겠다. 확실한 건 현재 내가 가지고 있는 것은 어마어마하게 큰 파일이라 힙 메모리를 늘려도 내 맥북 에어로는 무리일 듯싶어 여기까지만 알아보고 파일 크기를 줄여 테스트만 통과하는 방식으로 해결했다.

 

 

 

참고

https://velog.io/@jsj3282/Heap-Memory-Leak-OutOfMemoryError

https://shanepark.tistory.com/403

https://goddaehee.tistory.com/246

https://tistory.latch.co.kr/11

728x90