by-nc-sa     개발자, DBA가 함께 만들어가는 구루비 지식창고!

JDK1.7 JVM 옵션




JDK1.7 JVM 옵션

Behavioral Options

Option and Default Value Description
-XX:-UseParallelGC Parallel GC 사용. (introduced in 1.4.1)
-XX:-UseParallelOldGC Full GC를 병렬로 수행. -XX:+UseParallelGC를 설정함으로 자동으로 설정가능. (introduced in 5.0 update 6)
-XX:-UseSerialGC Serial GC 설정. (introduced in 5.0)
-XX:+UseParNewGC Young 영역에 대한 CMS 컬렉터 활성화
-XX:+UseConcMarkSweepGC CMS 컬렉터 활성화
-XX:+UseG1GC G1 컬렉터 활성화

Garbage First (G1) Garbage Collection Options

Option and Default Value Description
-XX:+UseG1GC Garbage First(G1) collector 사용
-XX:NewRatio=n new : old의 비율 설정. 기본값은 2.
-XX:SurvivorRatio=n eden : survivor 비율 설정. 기본값은 8.
-XX:ParallelGCThreads=n 병렬 GC를 처리하기위한 thread 갯수 지정. 기본값은 JVM이 동작하는 OS 환경에 따라 다름.
-XX:G1ReservePercent=n 객체의 승진 실수를 줄이기 위한 실수 한계치로서 사용되는 예약된 공간을 설정. 기본값은 10.
-XX:G1HeapRegionSize=n G1과 함께 자바 힙은 규정화된 크기의 영역으로 분할된다. 기본값은 인간공학적 측정(ergonomics)으로 계산된 값을 사용한다. 최저값은 1Mb이며 최대값은 32Mb이다.

Performance Options

Option and Default Value Description
-XX:MaxHeapFreeRatio=70 최대로 늘어날 수 있는 메모리 사이즈 비율을 조정할 수 있다. 디폴트는 70이다.
-XX:MaxNewSize=n Young 제너레이션의 최대 크기 지정 (bytes 단위).
-XX:MaxPermSize=64m Permanent Generation 의 size 지정 <span style=
-XX:MinHeapFreeRatio=40 최소한의 메모리 사이즈 비율 설정.
-XX:NewRatio=n Young 제너레이션과 Old 제너레이션 비율 지정 Young : Old = 1 : N
-XX:NewSize=n Young 제너레이션의 초기 크기 지정 NewRatio 보다 우선순위 높음
-XX:SurvivorRatio=8 eden/survivor space size 비율 6; Sparc in 1.3.1: 25; other Solaris platforms in 5.0 and earlier: 32
-XX:MetaspaceSize=N jdk8
-XX:MaxMetaspaceSize=N jdk8
-XmsN 초기 힙 사이즈 지정
-XmxN 최대 힙 사이즈 지정
-XmnN NewSize = NewMaxSize 의 약칭
  • JVM Memory Model
그림출처

Debugging Options

Option and Default Value Description
-XX:ErrorFile=./hs_err_pid<pid>.log 에러 발생시 이 file에 에러 저장. (Introduced in 6.)
-XX:-ExtendedDTraceProbes performance-impacting dtrace probes 사용. (Introduced in 6. Relevant to Solaris only.)
-XX:HeapDumpPath=./java_pid<pid>.hprof heap dump를 위한 디렉토리와 파일명. (Introduced in 1.4.2 update 12, 5.0 update 7.)
-XX:-HeapDumpOnOutOfMemoryError java.lang.OutOfMemoryError 발생 시 Dump heap. (Introduced in 1.4.2 update 12, 5.0 update 7.)
-XX:OnError="<cmd args>;<cmd args>" 치명적인 에러 발생 시 사용자가 정의한 명령어를 수행. (Introduced in 1.4.2 update 9.)
-XX:OnOutOfMemoryError="<cmd args>;<cmd args>" OutOfMemoryError 가 최초 발생했을 때 사용자가 정의한 명령어 수행. (Introduced in 1.4.2 update 12, 6)
-XX:-PrintGC GC 메시지 출력.
-XX:-PrintGCDetails 더 상세한 GC 메시지 출력. (Introduced in 1.4.0.)
-XX:-PrintGCTimeStamps GC의 timestamp 출력. (Introduced in 1.4.0.)

JVM 설정 참고

  • Java VM Options You Should Always Use in Production
  • Java < 8
        -server
        -Xms<heap size>[g|m|k] -Xmx<heap size>[g|m|k]
        -XX:PermSize=<perm gen size>[g|m|k] -XX:MaxPermSize=<perm gen size>[g|m|k]
        -Xmn<young size>[g|m|k]
        -XX:SurvivorRatio=<ratio>
        -XX:+UseConcMarkSweepGC -XX:+CMSParallelRemarkEnabled
        -XX:+UseCMSInitiatingOccupancyOnly -XX:CMSInitiatingOccupancyFraction=<percent>
        -XX:+ScavengeBeforeFullGC -XX:+CMSScavengeBeforeRemark
        -XX:+PrintGCDateStamps -verbose:gc -XX:+PrintGCDetails -Xloggc:"<path to log>"
        -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=10 -XX:GCLogFileSize=100M
        -Dsun.net.inetaddr.ttl=<TTL in seconds>
        -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=<path to dump>`date`.hprof
        -Djava.rmi.server.hostname=<external IP>
        -Dcom.sun.management.jmxremote.port=<port> 
        -Dcom.sun.management.jmxremote.authenticate=false 
        -Dcom.sun.management.jmxremote.ssl=false
    
  • Java >= 8
        -server
        -Xms<heap size>[g|m|k] -Xmx<heap size>[g|m|k]
        -XX:MaxMetaspaceSize=<metaspace size>[g|m|k]
        -Xmn<young size>[g|m|k]
        -XX:SurvivorRatio=<ratio>
        -XX:+UseConcMarkSweepGC -XX:+CMSParallelRemarkEnabled
        -XX:+UseCMSInitiatingOccupancyOnly -XX:CMSInitiatingOccupancyFraction=<percent>
        -XX:+ScavengeBeforeFullGC -XX:+CMSScavengeBeforeRemark
        -XX:+PrintGCDateStamps -verbose:gc -XX:+PrintGCDetails -Xloggc:"<path to log>"
        -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=10 -XX:GCLogFileSize=100M
        -Dsun.net.inetaddr.ttl=<TTL in seconds>
        -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=<path to dump>`date`.hprof
        -Djava.rmi.server.hostname=<external IP>
        -Dcom.sun.management.jmxremote.port=<port> 
        -Dcom.sun.management.jmxremote.authenticate=false 
        -Dcom.sun.management.jmxremote.ssl=false
    

문서정보

Enter labels to add to this page:
Please wait 
Looking for a label? Just start typing.