옵션
-server : Java Hotspot Server VM을 선택. Java Hotspot Client VM대비 구동 시간은 오래걸리지만, 이후부터는 빠른 성능을 발휘한다.
(참고: https://docs.oracle.com/javase/7/docs/technotes/guides/vm/server-class.html)
-Djava.net.preferIPv4Stack : IP4 사용여부 (boolean)
-Dsun.io.useCanonCaches : Java의 정규화 캐시 사용여부 (boolean)
-Dfile.encoding : Java 소스파일 인코딩
-Djava.awt.headless : 비윈도우 환경에서 GUI 클래스를 사용할 수 있게해주는 옵션
GC 관련 옵션
-Xms : JVM시작시 Heap 영역의 크기
ex) -Xms1g
-Xmx : 최대 Heap 영역의 크기
ex) -Xms2g
-XX:NewRatio : New 영역과 Old 영역의 비율
ex) -XX:NewRatio=2 (New 영역 2, Old 영역 8)
-XX:NewSize : New영역의 크기
-XX:SurvivorRatio : eden 영역과 survivor 영역의 비율
-XX:MetaspaceSize : 자바8이상에 해당(이전은 Permanent이다) - Metaspace영역 사이즈
-XX:MaxMetaspaceSize : 자바8이상에 해당(이전은 Permanent이다) - Metaspace영역의 최대 사이즈
-XX:+UseSerialGC : Serial GC를 사용
-XX:+UseParallelGC : Parallel GC를 사용
-XX:+UseParallelOldGC : Parallel Old GC를 사용
-XX:+UseConcMarkSweepGC : CMS GC를 사용
-XX:+UseG1GC : G1GC를 사용
-XX:ParallelGCThreads=N : 스레드 수를 설정한다 (Serial GC는 무효 -애초에 스레드가 1개)
-XX:MaxGCPauseMillis=N(ms) : STW 시간의 최대값을 설정. 처리시간이 지정된 N ms를 초과하지않는다
-XX:+DisableExplicitGC : System.gc()가 호출되지 않도록 함
-verbose:gc : JVM을 가동할때 GC GUI를 사용하여 모니터링할 수 있도록 함
-XX:+PrintGCDetails (GC 수행 상세 정보를 출력)
-XX:+PrintGCDateStamps (GC 이벤트 발생 시간 - 년월일 시분초 을 출력한다)
-XX:+PrintGCTimeStamps (GC 이벤트 발생 시간 - VM 시작후 경과한 시간을 출력)
-XX:+PrintHeapAtGC (GC 발생시 Heap 상세 정보를 출력)
-XX:+HeapDumpOnOutOfMemoryError : OutOfMemoryError 오류가 발생시 heap dump를 생성한다.
-XX:HeapDumpPath=<경로지정> : heap dump를 생성할 경로를 지정한다. (로그정보를 통해 오류 원인을 분석할 수 있다)
-Xloggc:<경로지정> : GC dump를 저장할 경로, 파일명을 설정한다
-XX:+PrintAdaptiveSizePolicy : GC 크기에 대한 정보를 출력한다 (G1GC의 경우 Region 정보를 볼 수 있다)
CMS GC관련 옵션
-XX:+UseParNewGC : CMS GC사용시, Young(eden, survivor) 영역에 Parallel GC를 수행한다.
-XX:+CMSParallelRemarkEnabled : Remark의 Pause Time을 조금 더 줄이기 위해 사용
-XX:CMSInitiatingOccupancyFraction=<N> : CMS가 언제(지정 %만큼 힙 영역이 찼을 때) 수집을 시작할지 설정 (default: 75%)
-XX:+UseCMSInitiatingOccupancyOnly : 초기 점유 공간을 동적 크기 조정하는 기능이 활성화됨
G1GC관련 옵션
-XX:G1HeapRegionSize : Region의 크기를 지정한다. 1MB~32MB 범위에서 설정 가능. 최소 힙크기를 2048개의 Region으로 나눌 수 있도록 설정해야함
-XX:MaxGCPauseMillis : G1GC가 유발하는 STW(Stop-The-World)의 최대시간을 지정. 해당 설정값은 최대한 적용되기 위할뿐, 보장되는 값은 아님 (default: 200)
-XX:DefaultMinNewGenPercent : Young(eden, survivor) 영역으로 사용할 힙 최소 크기. 전체 힙 크기 대비 비율을 지정함 (default: 5%)
-XX:DefaultMaxNewGenPercent : Young(eden, survivor) 영역으로 사용할 힙 최대 크기. 전체 힙 크기 대비 비율을 지정함 (default: 60%)
-XX:ParallelGCThreads : STW 상황에서 GC를 수행하는 스레드 개수를 지정. CPU Core수가 8개 이하인 경우에는, Core수와 동일하게 설정하는 것을 권장
-XX:ConcGCThreads : Concurrent Mark 작업을 수행하는 스레드 개수를 지정. ParallelGCThreads의 25%로 설정하는 것을 권장한다.
-XX:InitiatingHeapOccupancyPercent : Old Heap의 Region의 지정된 %만큼 용량이 채워졌을 경우, Mark를 시작한다. (default: 45%)
-XX:G1OldCSetRegionLiveThresholdPercent : Mixed GC가 시작되는 Old Region 크기를 지정 (default: 65%)
(?) Mixed GC : Full GC를 완료하는 시점에 Young/Old Region을 동시에 GC실행
-XX:+UseStringDeduplication : 불필요한 문자열 중복 생성 방지
참고자료
- https://d2.naver.com/helloworld/37111
- https://blog.ddoong2.com/2019/07/29/IntelliJ-IDEA-%EC%98%B5%EC%85%98/#
'JAVA' 카테고리의 다른 글
Java - 자료구조와 컬렉션 프레임워크 (0) | 2022.01.23 |
---|---|
Java - 빌더 패턴(Builder Pattern) (0) | 2022.01.13 |
Java - Garbage Collector (0) | 2021.11.01 |
Java - 데이터 타입(기본타입, 참조타입) (0) | 2021.10.20 |
Java - Jackson (0) | 2021.09.30 |