JVM -Xmx, -Xms 옵션
java -Xms2048m -Xmx2048m -jar app.jar
Xmx 및 Xms는 사용할 최대 및 최소 힙 크기를 지정하는 데 사용됩니다.
- Xmx
- Java 프로세스에서 사용할 수 있는 최대 힙 크기를 설정합니다.
- 설정하지 않으면 시스템의 물리적 메모리 크기가 기본값이 됩니다.
- Xms
- Java 프로세스에서 사용할 수 있는 최소 힙 크기를 설정합니다.
- 미설정시 Xmx와 동일하게 설정
Xmx와 Xms를 지정해야 하는 이유는 무엇입니까?
JVM이 메모리가 부족한 경우 운영 체제에 추가 메모리를 요청하여 힙 크기를 조정합니다.
이때 GC가 발생했고, JVM이 늘어나는 힙의 크기를 재조정하지 않아 결국 Xmx와 같아졌다.
이 조정이 시스템의 물리적 메모리 크기를 초과하면
스왑 공간으로 스왑 인 및 스왑.
https://liltdevs./93
가상 메모리
Chapter 10 Virtual Memory 물리적 메모리와 논리적 메모리를 완전히 분리하여 메모리에 로드되지 않아도 전체 프로세스가 실행되도록 하는 기술입니다.가상 메모리 정의 및 이점 설명
liltdevs.
이때 스왑 영역은 디스크가 되므로 오버헤드가 발생한다.
디스크 읽기 및 쓰기, 즉 스왑 공간,
GC도 동시에 발생하는 경우 엄청난 성능 문제가 발생할 수 있습니다.
또한 Xmx와 Xms가 동일하지 않을 때 문제가 발생할 수 있습니다.
Xms가 너무 작으면 GC를 자주 수행합니다.
이때 추가 메모리를 신청하면 위와 같은 현상이 나타납니다.
따라서 한 시스템에서 여러 서버를 실행하고 있고
애플리케이션이 많은 메모리를 사용할 것으로 예상되는 경우
적절한 Xmx 및 Xms 설정을 지정할 수 있어야 합니다.
로깅을 위한 가상 머신 옵션
- 세부정보: gc
- JVM에서 GC 이벤트가 발생할 때마다 간단한 로그 메시지를 출력합니다.
- Xlog:gc
- 자세한 GC 로그 인쇄
- 다양한 방식으로 출력 형식 구성
- -Xlog:gc* GC 로그의 상세 정보 표시
- Xlog:gc+힙=디버그
- GC 관련 메모리 사용량 정보 출력
- 이 옵션을 사용하면 GC 로그와 함께 힙 정보도 출력됩니다.
- XX:+ GCDetails 인쇄
- GC 이벤트의 세부 정보 인쇄
- 이 옵션을 사용하면 GC 로그가 상세합니다.
- XX:+PrintGCDateStamps
- GC 이벤트가 발생한 시간 출력
- XX:+PrintHeapAtGC
- GC 이벤트 발생 시 힙 사용량 정보 출력
- XX:+PrintTenuringDistribution
- 활성 및 비공격적 GC의 세부 정보를 인쇄합니다.