꼭 필요한 것만 골라 최소한의 public API를 설계하자. 그외에는 클래스, 인터페이스, 멤버가 의도치 않게 API로 공개 되는 일이 없도록 해야 한다. public 클래스는 상수용 public static final 필드 외에는 어떠한 public 필드도 가져서는 안된다. public static final 필드가 참조하는 객체가 불변인지 확인하라.
AWS Command Line Interface (AWS CLI) 는 명령줄 셸의 명령을 사용하여 AWS 서비스와 상호 작용할 수 있는 오픈 소스 도구입니다. 최소 구성으로 AWS CLI 를 사용하면 터미널 프로그램의 명령 프롬프트에서 브라우저 AWS Management Console 기반에서 제공하는 것과 동일한 기능을 구현하는 명령을 실행할 수 있습니다.
OpenJDK 64-Bit Server VM warning: INFO: os::commit_memory(0x00000000fbe00000, 27262976, 0) failed; error='Not enough space' (errno=12)
위에 러는 말그대로 메모리가 충분하지 않아 발생한다.
해결책으로는 여러가지 방법이 있는걸로 화인되었다.
시스템의 메모리 로드 줄이기
물리적 메모리 또는 SWAP 공간 늘리기
SWAP 백킹 저장소가 가득차 있는지 확인
64비트 OS 64비트 Java 사용
JAVA 힙 크기 줄이기 (-Xmx/ -Xms)
java 스레드 수 줄이기
java 스레드 스택 크기 줄이기 (-Xss)
다양한 방법이 있는데 나의 겨우 swap 공간을 확인후 할당하는 방향으로 해결하기로 했다.
swap 이란?
스왑은 Linux 기반 운영 체제에서 가상 메모리로 작동하는 저장 장치(예: HHD, SSD, 가상 저장 장치)의 전용 공간이다. 시스템의 사용 가능한 메모리가 부족할 때 물리적 RAM(Random Access Memory)을 보충하는 데 사용된다. 스왑 공간을 통해 운영 체제는 덜 자주 사용되는 데이터를 RAM에서 스왑 영역으로 이동하여 더 중요하거나 자주 액세스하는 데이터를 위해 RAM의 공간을 확보할 수 있다.
스왑 공간은 스왑 파티션 또는 스왑 파일의 형태일 수 있다. 스왑 파티션은 저장 장치의 전용 파티션인 반면 스왑 파일은 기존 파일 시스템 내의 파일이다. 둘 다 동일한 목적을 수행한다.