Java Virtual Machine (JVM) 옵션은 Java 애플리케이션의 실행 및 성능을 조정하기 위해 사용되는 매개변수들을 나타냅니다.
다양한 옵션들이 있으며, 이들은 메모리 관리, 성능 최적화, 디버깅 등 다양한 측면에서 설정될 수 있습니다.
Java 애플리케이션의 실행 및 성능을 조정하기 위해
주로 터미널 또는 명령 프롬프트에서 사용
메이븐이나 그레이들로 빌드를하면 JAR나 WAR 파일이 만들어진다.
이게 자바 어플리케이션을 빌드한 파일.
이 자바 어플리케이션을 JVM이 돌리면서 OPTION 으로 설정한 값을 리미트값으로 실행시키게 된다.
JVM에서 사용할 수 있는 다양한 옵션.
-D : JVM 애플리케이션에서 사용할 시스템 환경 변수의 이름과 값을 지정하는데 사용.
-Xms : 작업을 수행하는 JVM의 최소 메모리 크기를 지정.
-Xmx : 작업을 수행하는 JVM의 최대 메모리 크기를 지정.
-XX:PermSize : JVM이 사용하는 영구 적인 메모리의 초기 크기를 지정.
-XX:MaxPerSize : JVM이 사용할 수 있는 최대 영구 적인 메모리 크기를 지정.
-server : 서버 모드를 활성화하여 JVM이 애플리케이션에 대한 최적의 성능을 제공하게 함.
-XX:+UseConcMarkSweepGC: Concurrent Mark and Sweep (CMS) 가비지 수집기를 사용하여 가비지 수집을 수행함.
-XX:+PrintGCDetails: 가비지 수집 과정에서 JVM이 수행한 작업에 대한 상세 정보를 출력함.
-XX:+HeapDumpOnOutOfMemoryError : 메모리 부족 오류가 발생할 때 JVM이 덤프를 생성하게 함.
-XX:ErrorFile=filename : JVM이 오류 메시지를 출력할 파일의 이름을 지정.
JVM 시작시 HEAP size와 최대 heap Size를 동일하게 세팅하는 것이 좋다.
Heap 사이즈를 변겨앟기위해 런타임 기간동안 발생하는 불필요한 오버헤드 줄일 수 있다.
32bit 운영체제인 경우 최대 Heap Size는 2^32 = 4GB까지 설정 가능
64bit 운영체제인 경우 최대 Heap Size는 더 많이 사용가능.
아래 명령어로 실행.
-D : 시스템 프로퍼티 설정
java -Duser.language=ko -Dfile.encoding=UTF-8 -jar YourApp.jar
-Xms 및 -Xmx : 힙 크기 조절
java -Xmx512m -Xms256m -jar YourApp.jar
XX:+UseConcMarkSweepGC : CMS 가비지 컬렉터 사용
java -XX:+UseConcMarkSweepGC -jar YourApp.jar
-XX:+PrintGCDetails : 가비지 컬렉션 로그 출력
java -XX:+PrintGCDetails -jar YourApp.jar
-XX:HeapDumpOnOutOfMemoryError : OutOfMemoryError 발생 시 힙 덤프 생성
java -XX:HeapDumpOnOutOfMemoryError -jar YourApp.jar
jvm 옵션 무조건 써야함 하나의 어플이 메모리를 다 쓰지 못하게 메모리를 그 서버의 4분의1을 사용하는데 메모리를 옵션을 써서 다 쓸 수 있게 설정해야한다.