본문 바로가기
공부/JAVA

JVM Option 정리

by KANGJUNG 2018. 10. 4.
728x90

-X 옵션은 비표준 옵션이며, -XX 옵션은 올바른 동작을 위해서는 특정한 시스템의 요구사항이 필요하다고 한다. 시스템 설정 변수에 접근권한이 필요

(JVM Option 튜닝에 따라 프로그램의 성능을 더 끌어올 릴 수 있다.)

 

옵션 및 기본값 설명
-XX:-AllowUserSignalHandlers 솔라리스에서 어플리케이션이 signal handler을 설치 할때 거부하지 않는다.
-XX:AltStackSize=16384 솔라리스에서 Kbyte 단위로 시그럴 스택 사이즈를 대체한다.
-XX:-DisableExplicitGC System.gc()을 호출하지 않고필요할때 JVM이 가비지 콜렉션을 수행한다.
-XX:+FailOverToOldVerifier 자바6에 추가되었으며 새로운 유형의 검사기가 실패할 때 이전 버전으로 오버할 수 없도록 한다.
-XX:+HandlePromotionFailure 젊은 세대의 컬렉션은 모든 살아있는 개체의 전체 추진의 보장을 요구하지 않습니다. (1.4.2 업데이트 11에서 도입) [5.0 및 이전 :. 거짓]
-XX:+MaxFDLimit 솔라리스에서 파일 디스크립터의 수을 Max까지 이르게 한다.
-XX:PreBlockSpin=10 + UseSpinning :-XX 사용하기 위해 변수를 계산 던가. 운영 체제 스레드 동기화 코드를 입력하기 전에 허용되는 최대 스핀 반복을 제어합니다. (1.4.2에 도입.)
-XX:-RelaxAccessControlCheck 검사 장치에 액세스 제어 검사를 휴식을 취한다. (6에 도입.)
-XX:+ScavengeBeforeFullGC 전체 GC에 앞서 가장 젊은 세대의 GC를 수행한다.
-XX:+UseAltSigs
Solaris 운영체제에서 VM은 디폴트로 SIGUSR1을 사용한다.
이것은 SIGUSR1을 시그널 체인(signal-chain) 하는 애플리케이션 과 충돌하는 경우
이 옵션은 SIGUSR1, SIGUSR2, 다른 시그널을 사용하도록 할 수 있다.
-XX:+UseBoundThreads 사용자 레벨 Thread 바인드 솔라리스에서만 사용
-XX:-UseConcMarkSweepGC
동시 가비지 콜렉션을 수행한다.
1.4.1 부터 이용가능
-XX:+UseGCOverheadLimit GC의 오버헤드를 제한할 수 있는 옵션이다.
-XX:+UseLWPSynchronization 솔라리스에서 동기방식의 쓰레드 대신에 LWP기반을 사용하게 한다. 1.4.0 이상에서는 디폴트 설정이다.
-XX:-UseParallelGC 병렬 가비지 콜렉션 사용 J2SE 1.4.0부터
-XX:-UseParallelOldGC Major GC에서 병렬 collector를 활성화 할 수 있다. 
-XX:-UseSerialGC 단일 Thread를 통한 직렬 GC 작업을 수행한다.
-XX:-UseSpinning 다중 프로세서 및 windows 플랫폼 환경에서 운영체제 스레드 동기화 전 Java 측에서 먼저 동기화를 수행한다.
-XX:+UseTLAB 쓰레드 로컬 객체 할당 사용한다.
-XX:+UseSplitVerifier 자바 5부터 도입되었으며 StackMapTable 속성과 함께 사용하는 유형 검사기이다.
-XX:+UseThreadPriorities 네이티브 환경 쓰레드를 우선순위를 적용
-XX:+UseVMInterruptibleIO 입출력 관리를 위해 스레드에 인터럽트 발생 시 OS_INTRPT 수행 (솔라리스 환경에서)

 

옵션 및 기본값 설명
-XX:+UseG1GC GC 수집기 사용여부
-XX:MaxGCPauseMillis=n GC의 일시 정지 시간의 대상을 설정
-XX:InitiatingHeapOccupancyPercent=n GC 사이클을 시작하기 위한 힙 점유율의 백분율이며 힙의 점유율을 기반으로 동시 GC 주기를 트리거하는 GC에서 사용 값 0은 '일정한 사이클을 해라라는 옵션이며' 값이 45가 기본값이라고 한다.
-XX:NewRatio=n 새로/이전의 generation 사이즈의 비율
-XX:SurvivorRatio=n survivor 영역을 지정
-XX:MaxTenuringThreshold=n 기본값은 31이며 젊은 객체가 살아 있을 수 있는 시간을 나타낸다.
-XX:ParallelGCThreads=n 가비지 컬렉터의 병행 단계에서 사용되는 스레드 수를 설정합니다. 기본값은 JVM이 실행중인 플랫폼에 따라 다릅니다.
-XX:ConcGCThreads=n Old generation marking 단계에서 사용되는 GC 스레드 수를 조정합니다.
-XX:G1ReservePercent=n 예약 된 힙의 양을 설정 기본값은 10
-XX:G1HeapRegionSize=n G1 사용 시 Java 힙이 균일 한 크기의 영역으로 세분화되며 기본값은 힙 크기에 따라 결정된다. 최소값 1MB, 최대값 32MB

 

옵션 및 기본값 설명
-XX:+AggressiveOpts 컴파일러를 최적화 할 수 있게 한다.
-XX:CompileThreshold=10000 컴파일 또는 재컴파일 전에 메소드 호출/분기의 수
-XX:LargePageSizeInBytes=4m Java 힙에 사용되는 페이지의 크기를 바이트 단위로 설정합니다.
-XX:MaxHeapFreeRatio=70 힙의 여유 퍼센티지 입니다. 기본값은 70 입니다.
-XX:MaxNewSize=size 새로 생성된 힙영역의 최대 크기를 바이트 단위로 지정합니다.
-XX:MaxPermSize=64m Perm Size의 크기를 지정합니다. (GC 튜닝을 참조)
-XX:MinHeapFreeRatio=40 GC 이 후 heap 여유공간의 확장을 피하기 위해 최소값 퍼센티지를 지정합니다.
-XX:NewRatio=2 generation의 사이즈의 비율을 설정합니다.
-XX:NewSize=2m generation의 기본사이즈를 MB 단위로 지정합니다.
-XX:ReservedCodeCacheSize=32m 예약된 코드 캐시 크기를 바이트 단위로 지정합니다.
-XX:SurvivorRatio=8 eden/survivor 공간 사이즈를 지정합니다.
-XX:TargetSurvivorRatio=50 GC 이후 남은 공간의 비율을 지정합니다.
-XX:ThreadStackSize=512 스택 스레드의 크기를 지정합니다. 0은 기본스택 크기를 사용함을 의미합니다.
-XX:+UseBiasedLocking 바이어스 잠금을 사용합니다.
-XX:+UseFastAccessorMethods 옵티마이저의 최적화된 버전을 사용합니다.
-XX:-UseISM 공유 메모리를 사용 여부를 설정합니다.
-XX:+UseLargePages 대형 페이지 사용 여부를 설정합니다.
-XX:+UseMPSS 힙에 대해 4MB 페이지가 있는 다중 페이지 크기 지원 사용여부를 설정합니다. (솔라리스 관련)
-XX:+UseStringCache 일반적으로 할당 된 문자열의 캐싱 사용여부를 결정합니다.
-XX:AllocatePrefetchLines=1 JIT 컴파일 코드에서 생성 된 프리 페치 명령어를 사용하여 마지막 객체 할당 후 로드할 캐시의 라인 수를 설정합니다.
-XX:AllocatePrefetchStyle=1 프리페치 명령어를 위한 생성된 코드 스타일 입니다.
-XX:+UseCompressedStrings 순수한 ASCII로 표현할 수 있는 문자열을 셋팅합니다. Byte 배열 사용
-XX:+OptimizeStringConcat 문자열 연결 작업 최적화 입니다. 

 

옵션 및 기본값 설명
-XX:-CITime JIT 컴파일러의 소요 시간을 설정합니다.
-XX:ErrorFile=./hs_err_pid<pid>.log 오류 발생 시 오류 데이터를 저장하는 경로를 지정합니다.
-XX:-ExtendedDTraceProbes dtrace 프로브를 활성화 합니다. (솔라리스 6 관련)
-XX:HeapDumpPath=./java_pid<pid>.hprof 메모리 누수 시 Heap 영역의 덤프를 저장할 경로를 지정합니다.
-XX:-HeapDumpOnOutOfMemoryError 메모리 누수 시 힙을 파일에 덤프합니다.
-XX:OnError="<cmd args>;<cmd args>" 치명적인 오류 발생 시 사용자 정의 명령을 실행합니다.
-XX:OnOutOfMemoryError="<cmd args>; 
<cmd args>"
메모리 누수 에러 발생 시 에러가 처음 thorw 될 경우에 사용자 정의 명령을 실행합니다.
-XX:-PrintClassHistogram Ctrl-break에서 클래스 인스턴스의 그래프를 출력합니다.
-XX:-PrintConcurrentLocks Ctrl-break에서 잠금상태를 출력합니다.
-XX:-PrintCommandLineFlags 명령행에 나타난 플래그를 출력합니다.
-XX:-PrintCompilation 메소드가 컴파일 될 시 메시지를 출력합니다.
-XX:-PrintGC GC에서 메시지를 출력합니다.
-XX:-PrintGCDetails GC에서 상세 메시지를 출력합니다.
-XX:-PrintGCTimeStamps GC에서 소요시간을 출력합니다.
-XX:-PrintTenuringDistribution 보유기간 정보를 출력합니다.
-XX:-PrintAdaptiveSizePolicy 생성 크기 조정에 대한 정보를 출력합니다.
-XX:-TraceClassLoading 클래스 로드를 추적합니다.
-XX:-TraceClassLoadingPreorder 참조된 순서로 로드된 모든 클래스를 추적합니다.
-XX:-TraceClassResolution 상수 풀을 추적합니다.
-XX:-TraceClassUnloading 로드되지 않은 클래스를 추적합니다.
-XX:-TraceLoaderConstraints 클래스 로더의 제약조건을 추가합니다.
-XX:+PerfDataSaveToFile 종료 시 jvm 상태를 저장합니다.
-XX:ParallelGCThreads=n 병렬 GC 수집기의 스레드 수를 설정합니다. JVM 실행 환경에따라 달라집니다.
-XX:+UseCompressedOops 힙 크기가 32GB 미만 최적화된 64비트 성능을 위해 압축 포인터를 사용합니다.
-XX:+AlwaysPreTouch JVM 초기화 중 힙을 사전에 터치합니다.
-XX:AllocatePrefetchDistance=n 객체 할당을 위한 프리 페치 거리를 설정합니다. 새 객체의 값으로 쓰려는 메모리는 마지막으로 할당 된 객체의 주소를 초과하는 비율로 계산하여 프리페치합니다. 기본값은 JVM 실행 환경에 따라 달라집니다.
-XX:InlineSmallCode=n 생성 된 네이티브 코드의 크기가 작은 경우 이전에 컴파일 된 메서드를 인라인합니다. 기본값은 JVM 실행 환경에 따라 달라집니다.
-XX:MaxInlineSize=35 인라인 될 메소드의 최대 바이트 코드 크기를 지정합니다.
-XX:FreqInlineSize=n 인라인된 메소드 중에서 자주 실행되는 바이트 코드 명령어들의 최대 수를 지정합니다.
-XX:LoopUnrollLimit=n 컴파일러 표현 노드 수가 이 값보다 작은 루프 본문을 언롤합니다. 한정값은 실제 값이 아닌 값의 함수입니다. 기본값은 JVM 실행 환경에 따라 달라집니다.
-XX:InitialTenuringThreshold=7 병렬 수집기에서 GC 크기 조정에 사용할 초기 지속 임계 값을 설정합니다.
-XX:MaxTenuringThreshold=n GC 크기 조정에 사용할 지속 임계 값을 설정합니다.
-Xloggc:<filename> GC에 대한 상세한 정보를 지정된 파일에 기록합니다.
-XX:-UseGCLogFileRotation GC 로그 순환을 사용하도록 설정합니다. -Xloggc을 사용해야합니다.
-XX:NumberOfGClogFiles=1 로그 순환 시 사용할 파일 수를 설정하며 값은 1보다 크거나 같아야합니다.
-XX:GCLogFileSize=8K 로그 순환 시 로그 파일의 크기를 지정합니다. 값은 8K 이상이여야합니다.

 

728x90
반응형

댓글