본문 바로가기
42

Java Out Of Memory Error: Java heap space

by jay-choe 2021. 9. 19.

평소에는 별일이 없다가. 갑자기 프론트엔드분이 서버가 내려간거냐고 메세지를 보내셨다.

엉..? 그럴리가..? 하고 확인을 해봤는데 정말로 서버가 내려갔었고, 서버 로그에는 Java Out Of Memory Error: Java heap space

이 적혀있었다.

 

물론 ec2 t2 micro의 1GB 메모리를 사용하고 있어서, 뭐 스팩을 올리면 되겠지.. 라는 막연한 생각을 했었는데. 문득 든 생각은

그럼 사이즈를 어디까지 늘려야 하는거지?? 였다.

 

그래서 한번 힙 사이즈에 대해서 공부를 했다.

 

min heap size(최소 힙 메모리 사이즈)

max heap size(최대 힙 메모리 사이즈)를 설정 할 수 있는데

 

기본적으로, 즉 default는 max heap size는 해당 서버의 메모리의 25프로, 즉 1기가의 메모리를 서버가 갖고 있다면, 250 정도의 메모리를 쓰는 것 이고, min heap size는 16분의 1 정도의 사이즈로 되어있다고 한다.

 

그래서 결론적으로, 굳이 .. 새로운 인스턴스를 만들고, 옮기는 작업을 하고 해봤자. 2기가 메모리로 옮긴다고 가정시 500 메가바이트의 메모리를 최대 힙메모리로 갖게 되는데, 그냥 기존 인스턴스에서 저 최대 힙 메모리 사이즈를 늘리면 옮길 필요가 없이 알뜰하게 쓸 수 있다고 생각했다.

 

그래서 찾아본 결과, java 명령어로 spring boot jar 실행시, 옵션을 줄 수 있었다.

 

-Xms512m -Xmx512m

Xms -> 최소 (min) 힙 메모리 사이즈

Xmx -> 최대 (max) 힙 메모리 사이즈

 

이렇게 옵션을 주고, 아직까지는 무리없이 돌아가는 것 같다.

 

뭔가 추가적으로 메모리 문제로 터지게 된다면, 더 알뜰하게 가상메모리사용을 고려해보고, 정 안되겠으면 이관작업을 해야겠다.

'42' 카테고리의 다른 글

QueryDSL 도입기  (0) 2021.11.09
Api key 적용하기  (0) 2021.08.22
URL Shortener 개발기  (0) 2021.08.06