VM OPTION에서 XMS와 XMX
XMS: 자바 애플리케이션이 실행될 때의 JVM에 할당되는 초기 힙 크기(Initial Heap Size)
XMX: JVM에 할당 가능한 최대 힙 크기(Max Heap Size)
JVM이 실행될 때 메모리가 XMS에 설정된 값에서 시작하여 최대 XMX에 설정된 값까지 사용 가능하다는 의미이다.
만약 메모리가 XMX를 넘어서면 OutOfMemoryError가 발생하며 자바 애플리케이션이 셧다운된다.
물론 최소 힙 크기(Minimum Heap Size)도 존재한다.
만약 jar를 실행할 때 -xms와 -xmx를 설정하지 않는다면?
오라클 공식문서에 따르면 xms, xmx의 디폴트 값은 아래와 같다.
xms: 현재 운영체제에 할당된 메모리의 1/64
xmx: 현재 운영체제에 할당된 메모리의 1/4
나는 aws ec2 t3.micro를 사용중이라 리눅스에 할당된 메모리는 1GiB이다.

그럼 초기 힙 크기, 최소 힙 크기, 최대 힙 크기를 확인할 수 있는 명령어를 실행하여 xms, xmx의 디폴트 값을 확인해보자.
java -XX:+PrintFlagsFinal -version | grep HeapSize
# 윈도우에서는 아래 명령어 실행
java -XX:+PrintFlagsFinal -version | findstr /R /C:"HeapSize"

xms(InitialHeapSize)는 16777216으로 표시된다. 단위는 byte라 mb로 환산하면 16mb이다. 16mb = 1024mb * 1/64
xmx(MaxHeapSize)는 251658240으로 표시된다. 이것도 mb로 환산하면 256mb이다. 256mb = 1024mb * 1/4