JVM Cannot Allocate memory
스프링부트 메모리 DB(H2) 사용하던중에 로컬에서는 잘 되던게
서버에서 기동시 JVM Cannot Allocate memory 에러가 발생했다
이유는
* 시스템 물리적 RAM 또는 스왑 공간 부족
* 프로세스 크기 제한 도달
해결법
* 시스템 메모리 로드 줄이기
* 물리적 RAM 또는 스왑 공간 늘리기
* 스웹 백킹 저장소가 가득 차 있는지 확인
* 64비트 OS에서 64비트 Java 사용
* Java 힙 크기 줄이기(-Xmx / -Xms)
* Java 스레드 수 줄이기
* Java 스레드 스택 크기 줄이기(-Xss)
* -XX:ReservedCodeCashSize= 를 사용하여 더 큰 코드 캐시 설정
Swap 파티셔닝
* swap 공간 확인
free -h
* swap 파일 생성, 2G 메모리 할당
touch /var/spool/swap/swapfile
dd if=/dev/zero of=/var/spool/swap/swapfile count=2048000 bs=1024
*권한 부여
chmod 600 /var/spool/swap/swapfile
*파일 포맷을 swap으로 변환하고, swap file로 등록
mkswap /var/spool/swap/swapfile
swapon /var/spool/swap/swapfile
*파일시스템 테이블에 등록
vim /etc/fstab
#swap 추가
/var/spool/swap/swapfile none swap defaults 0 0
* swap 확인
참고
velog.io/@adam2/JVM-Cannot-allocate-memory-%EC%97%90%EB%9F%AC