CMS: 3개의 글
CMS 는 Default로 PERM 제너레이션을 처리하지 않는다. 때문에 PERM 영역이 가득차면 CMS는 Full GC를 수행한다. -XX:CMSPermGenSweepingEnabled ( Default : false ) -XX:CMSInitiatingPermOccupancyFraction=N ( Default : 80% ) -XX:+CMSClassUnloadingEnabled ( Default : true ) CMSPermGenSweepingEnabled => PERM 이 CMS의 스레드에 의해 처리되도록 지정한다 CMSInitiatingPermOccupancyFraction = N => PERM의 N%가 가득 찼을 때, PERM 영역을 처리하는 스레드를 실행시킨다. CMSClassUnloadingE..
CMS 힙 크기 튜닝하기 CMS는 힙과 제너레이션의 크기를 결정하기 위해 Throughput Collector에서 봤던 플래그 MaxGCPauseMillis=N , GCTimeRatio=N 두개를 사용한다. [JVM] Throughput Collector - 힙 사이즈 튜닝하기 CMS Concurrent Mode 튜닝하기 CMS를 튜닝할 때 가장 중요한 것은 Full GC 가 발생하지 않도록 하는 것! CMS는 Full GC가 발생하지 않는것이 가장 이상적이다 CMS의 영 제너레이션은 Full GC 가 발생하지 않으면 절대로 크기가 변경되지 않는다 CMS의 목표는 Full GC가 발생하지 않는 것이므로, 잘 튜닝된 CMS 어플리케이녀은 절대로 영 제너레이션의 크기가 변경되지 않는다. CMS 올드 제러네이..
기본동작 1) Minor GC - 모든 어플리케이션 스레드를 멈춤 2) 동시 병렬 컬렉션 - Full GC 가 발생하지 않도록 백그라운드에서 GC 3) Full GC - 어쩔수 없는 경우 Full GC CMS Collector Minor GC 동작 과정 요약 - Throughput Collector 와 동일 CMS Collector Minor GC Log CMS Collector 동시 병렬 컬렉션 동작 과정 요약 CMS Collector 동시 병렬 컬렉션 GC Log Step 1. Initial Mark - 모든 어플리케이션 스레드가 멈춘다(Stop-the-world) Step 2. Mark - 어플리케이션 스레드를 멈추지 않는다(동시 병렬 실행) - 아무런 정보가 없다. 단지 표시만 하는 단계 Step..