Java VM 옵션
2008. 11. 11. 12:21ㆍJava
Java HotSpot VM Options
l -X 옵션은 비표준옵션이다. “모든 VM에서 지원을 보장 하지 않는다” 뜻입니다. 향후 릴리즈에서는 언급없이 변결될수 있습니다.
l -XX 옵션은 올바른 동작을 위해서는 특정한 시스템 요구사항이 필요하며 시스템 설정 파라미터에 접근할 권항ㄴ이 있어야 합니다. 임의의 사용자에 대해서는 비추천이면 이도 향후 릴리즈에서는 언급없이 변결될수 있습니다.
-XX:+VerifyBeforeGC
-XX:+VerifyAfterGC
-XX:+VerifyTLE
(J2SE 1.4 에서는 -XX:+VerifyTLAB )
-XX:+VerifyBeforeScavenge
-XX:+VerifyAfterScavenge |
Heap의 무결성 검사
모두 debug시에만 사용가능 |
-Xmaxjitcodesize |
최대 컴파일된 크기 지정
예전에는 -Xmaxjitcodesize=32m,
현재는 -Xmaxjitcodesize32m 사용 |
XX:+UseConcMarkSweepGC |
동시 가비지 콜렉션을 수행한다.
1.4.1 부터 이용가능 |
-Xincgc |
Train GC 사용 |
-Xnoincgc |
Train GC을 사용하지 않는다. 기본값 |
-XX:MaxHeapFreeRation=<Maximum> |
힙 여유 퍼센트 기본 70 |
-X:MinHeapFreeRation=<Minimum> |
힙 여유 퍼센트기본 40 |
-Xint |
JIT 컴파일 없이 인터프리더만 |
-XX:+UseBoundThreads |
사용자 레벨 Thread 바인드 솔라리스에서만 사용 |
-Xmn<Size> |
young generation 크기를 설정한다.
J2SE 1.4.0부터 이용가능하다. |
-XX:+UseParallelGC |
병렬 가비지 콜렉션 사용 J2SE 1.4.0부터 |
-XX:+UseAltSigs |
Solaris 운영체제에서 VM은 디폴트로 SIGUSR1을 사용한다.
이것은 SIGUSR1을 시그널 체인(signal-chain) 하는 애플리케이션 과 충돌하는 경우
이 옵션은 SIGUSR1, SIGUSR2, 다른 시그널을 사용하도록 할 수 있다.
J2SE 1.4.1부터 Solaris 운영환경에서 이옳?수 있다. |
-XX:+UseBoundThreads |
이 옵션들은 쓰레드들과 결합되어 생성되어지도록 모든 쓰레드들에게 강제한다. |
-XX:NewSize=<size>
-XX:MaxNewSize=<size> 1.3에서
-Xmn<size> 1.4에서 |
young generation resizing 불가능하게.
HotSpot에서 이와 같이 할때 단순하게 young generation의 사이즈를 상수로 설정한다. |
-verbose:gc |
gc 통계 수집의 형태를 여러가지로 변경 |
-XX:MaxInlineSize=<size> |
인라인된 메소드안에서 바이트 코드 명령어들의 |
-XX:FreqInlineSize=<size> |
인라인된 메소드에서 자주 실행되는 바이트 코드 명령어들의 |
-XX:+PrintInlining |
디버그에서만 인라인된 메소드에 관하여 메시지를 출력한다. |
-XX:DontYieldALotInterval=<ms> |
디버기에서만 yield사이의 milliseconds 간격 |
-XX:-AllowUserSignalHandlers |
솔라리스에서 어플리케이션이 signal handler을 설치 할때 거부하지 않는다. |
-XX:AltStackSize=16384 |
솔라리스에서 Kbyte 단위로 시그럴 스택 사이즈를 대체한다. |
-XX:+MaxFDLimit |
솔라리스에서 파일 디스크립터의 수을 Max까지 이르게 한다. |
-XX:MaxHeapFreeRatio=70 |
GC후 heap 여유공간이 줄어드는것을 피하기 위해 Maximum 퍼센트를 지정한다. |
-XX:MinHeapFreeRatio=40 |
GC후 heap 여유공간의 확장을 피하기 위해 Minimum 퍼센트르르 지정한다. |
-XX:-UseBoundThreads |
솔라리스에서 커널 쓰레드를 사용자 쓰레드 레벨로 바인드 한다. |
-XX:-UseLWPSynchronization |
솔라리스에서 동기방식의 쓰레드 대신에 LWP기반을 사용하게 한다. 1.4.0 이상에서는 디폴트 설정이다. |
-XX:+UseThreadPriorities |
네이티브 쓰레드 우선순위 사용 |
-XX:MaxPermSize=64m |
permSize의 크기 지정 GC 튜닝 참조 |
-XX:-CITime |
1.4에서 JIT 컴파일러의 시간 소요 |
-XX:-PrintTenuringDistribution |
보유 기간 정보를 출력한다. |
-XX:TargetSurvivorRatio=50 |
Desired percentage of survivor space used after scavenge |
-XX:-DisableExplicitGC |
System.gc()을 호출하지 않고, 필요할때 JVM이 가비지 콜렉션을 수행한다. |
-XX:CompileThreshold=10000 |
컴파일 또는 재컴파일 전에 메소드 호출/분기의 수 10,000 -server, 1,500 –client |
-XX:MaxNewSize=32m |
바이트로 새로 생성되는 최대 크기
현재 MaxNewSize를 결정하기 위해서 사용되어지는 NewRatio로써
1.3에서 32m sparc, 2.5m intel 이고 1.4서는 제안이 없다. |
-XX:NewRatio=2 |
새로/이전의 generation 사이즈의 비율
sparc -server: 2, sparc -client: 4 (1.3) 8 (1.3.1+), intel: 12 |
-XX:NewSize=2228224 |
새로운 generation의 기본 사이즈 바이트로 sparc 2.125M, intel: 640k |
-XX:ReservedCodeCacheSize=32m |
예약된 코드 캐시 크기 바이트로 - - maximum code cache size. Solaris 64-bit: 1024m |
-XX:SurvivorRatio=64 |
Ratio of eden/survivor space size
Solaris: 64, Solaris: 32 (on 1.3.1 and later), Linux/Windows: 8 |
-XX:ThreadStackSize=512 |
Thread Stack Size (in Kbytes) (0 means use default stack size)
Sparc: 512, Solaris Intel: 256, Sparc 64bit: 1024 all others 0 |
-XX:+UseTLE
-XX:+UseTLAB J2SE 1.4 에서 |
쓰레드 로컬 객체 할당 사용한다.
Sparc -server: true, all others: false |
Xms256m |
초기 힙사이즈 256M로 지정 |
-Xmx512m |
멕스 힙사이즈 512M로 지정 |
l CG정보 출력 옵션 예
-verbosegc -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintGCDetails