Akashic Records

JAVA 5.0 가비지 콜렉터 추가 옵션 본문

오래된글/Articles

JAVA 5.0 가비지 콜렉터 추가 옵션

Andrew's Akashic Records 2018. 4. 19. 14:47
728x90

JAVA 5.0 가비지 콜렉터 추가 옵션


throughput generationacollector

여러 개의 CPU를 사용하여 멀티 쓰레드를 구동한다.

구동옵션

  • -XX:+UseParallelGC : 병렬 가비지 콜렉션 사용(JDK 1.4.0 이후)

  • -XX:ParallelGCThreads=n : 병렬 가비지 콜렉션에 사용될 쓰레드 수 지정


추가옵션

  • -XX:AdaptiveSizeDecrementScaleFactor=VALUE : adaptive size의 축소를 위해 scale-down 요소를 설정한다. 디폴트 값은 4이다.

  • -XX:AdaptiveSizePolicyCollectionCostMargin=VALUE : 만약 collection cost가 한계치 안에 있으면 fuldelta에 의해 양쪽을 감소한다. 디폴트 값은 50이다.

  • -XX:AdaptiveSizePolicyInitializingSteps=VALUE : 진짜 데이터가 사용되기 전 heuristics를 사용하기 위해 몇 가지 단계를 지정한다.디폴트 값은 20이다

  • -XX:AdaptiveSizeThroughPutPolicy=VALUE : throuhgput 목표를 위해 generation size를 바꾸는 정책을 지정한다. 디폴트 값은 0이다.


low pause collector

기존의 FulGC의 단점을 보완하기 위해서 FulGC에 의해서 어플리케이션의 멈춤 현상을 최소화하는 GC이다. FulGC에 소요되는 작업을 어플리케이션을 멈추고 진행하는 것이 아니라, 일부는 어플리케이션이 돌아가는 단계에서 수행하고, 최소한의 작업만을 어플리케이션이 멈췄을 때 수행하는 방법

구동옵션

  • -XX:+UseConcMarkSweepGC


추가옵션

  • -XX:CMSAbortablePrecleanMinWorkPerIteration=VALUE : 각 preclean 반복 주기당 예정되는 최소한의 일을 설정한다. 디폴트 값은 100 이다.

  • -XX:CMSAbortablePrecleanWaitMillis=VALUE : 주기당 작업이 충분하기 않을 경우, 반복되는 각 주기 사이의 수면 시간을 milliseconds 단위로 지정한다. 디폴트 값은 50이다.

  • -XX:CMSBootstrapOccupancy=VALUE : bootstrapping collection stats에 대한 CMS collection을 초기화하는 CMS 생성 점유율을 지정한다. 디폴트 값은 50이다.

  • -XX:CMSMarkStackSizeMax=VALUE : CMS marking stack의 최대 크기를 지정한다. 디폴트 값은 4MB이다.

  • -XX:CMSMaxAbortablePrecleanLoops=VALUE : 값이 0보다 클때, 중단될 수 있는 preclean 반복주기의 최대값을 설정한다. 디폴트 값은 0이다.

  • -XX:CMSMaxAbortablePrecleanTime=VALUE :중단 가능한 preclean 상태의 최대 시간을 milliseconds 단위로 지정한다. 디폴트 값은 1000초나 1초이다.

  • -XX:+CMSPrecleanRefLists1 : (반복되는) preclean 주기 동안 preclean 레퍼런스 목록을 설정한다. 디폴트 값은 true이다.

  • -XX:+CMSPrecleanRefLists2 : abortable preclean phase동안 preclean 레퍼런스 목록을 설정한다. 디폴트 값은 false이다.

  • -XX:CMSSamplingGrain=VALUE : CMS를 위한 Eden 예제 사이 최소 거리를 지정한다. 디폴트 값은 16K이다.

  • -XX:CMSScheduleRemarkEdenPenetration=VALUE : remark pause를 시도하고 스케줄링하는 Eden 점유율을 설정한다. 디폴트 값은 50%이다.

  • -XX:CMSScheduleRemarkEdenSizeThreshold=VALUE : remark를 스케줄링하기 위한 Eden 초기 크기를 설정한다. 만약 사용된 Eden이 이 값 이하일 경우 remark 스케줄링을 시도하지 말 것. 디폴트 값은 2MB이다.

  • -XX:CMSScheduleRemarkSamplingRatio=VALUE : 앞 주기의 점유율이 예정된 스케줄 remark의 1/비율에 이르기 전에 Eden top 샘플링을 시작한다. 디폴트 값은 5이다.


공통추가 옵션

-XX:MaxGCMinorPauseMillis=VALUE

-XX:MaxGCPauseMillis=VALUE

사용자는 시간 제한을 millisecond 단위로 요청할 수 있다. 가상 머신은 지정된 최대 시간을 지키기 위해 heap time을 자동으로 조절할 것이다.

-XX:GCTimeRatio=VALUE

작업 시간에 대한 가비지 콜렉션 시간의 비율을 제어한다.

-XX:DefaultInitialRAMFraction=VALUE

-XX:DefaultMaxRAM=VALUE

-XX:DefaultMaxRAMFraction=VALUE

DefaultInitialRAMFraction의 디폴트 값은 64를 가지고 DefaultMaxRAMFraction는 디폴트 값으로 4를 가진다. Heap의 초기 디폴트 크기는 DefaultInitialRAMFraction에 의해 나눠지는 물리적인 RAM의 크기이다. 사용자 DefaultMaxRAM로 정확한 최대 크기를 설정하거나 DefaultMaxRAMFraction를 사용하여 값 비례를 설정할 수 있다.

-XX:omError=VALUE

치명적인 오류가 발생한 경우 사용자가 구동할 프로그램을 지정할 수 있게하며, 프로그램에 JVM 프로세스를 전달한다. “-XX:omError="gdb %p“


728x90
Comments