2. Garbage collection (GC) is a form of automatic memory management . It is a special case of resource management, in which the limited resource being managed is memory.
8. Description -Xmn<size> Young Generation 이 거주하는 New Space 의 크기를 지정한다 . 대개의 경우 이 옵션보다는 -XX:NewRatio 옵션이나 -XX:NewSize 옵션을 많이 사용한다 . -Xss<size> 개별 Thread 의 Stack Size 를 지정한다 . 대부분의 경우 기본값 (Default) 을 그대로 사용하는 것이 바람직하다 . 많은 수의 Thread 를 사용하는 Application 의 경우 Thread Stack 에 의한 메모리 요구량이 높아지며 이로 인해 Out Of Memory Error 가 발생할 수 있다 . -Xms<size> Java Heap 의 최초 크기 (Start Size) 를 지정한다 . Java Heap 은 -Xms 옵션으로 지정한 크기로 시작하며 최대 -Xmx 옵션으로 지정한 크기만큼 커진다 . -Xmx<size> Java Heap 의 최대 크기 (Maximum Size) 를 지정한다 . Java Heap 은 -Xms 옵션으로 지정한 크기로 시작하며 최대 -Xmx 옵션으로 지정한 크기만큼 커진다 .
10. Default Description -XX:+CMSClassUnloadingEnabled False CMS Collector 는 Permanent Generation 에 대해 GC 작업을 수행하지 않으며 , Class 메타데이터에 대한 Unloading 작업 또한 수행하지 않는다 . 따라서 Application 의 특성상 많은 수의 Class 를 동적으로 생성하고 Loading 하는 경우에는 Permanent Generation 에서 Out Of Memory Error 가 발생할 수 있다 . 이런 경우에는 이 옵션과 함께 CMSPermGenSweepingEnabled 옵션을 사용해서 Permanent Generation 에 대한 GC 작업과 Class Unloading 작업을 활성화한다 . -XX:+CMSPermGenSweepingEnabled False CMS Collector 는 기본적으로 Permanent Generation 에 대해 Collection 을 수행하지 않는다 . 따라서 많은 수의 Class 를 Loading 하는 경우 Out Of Memory Error 가 발생할 수 있다 . 이 옵션을 활성화하면 Permanent Generation 에 대한 Collection 을 수행한다 . -XX:+DisableExplicitGC False System.gc 호출에 의한 Explicit GC 를 비활성화한다 . RMI 에 의한 Explicit GC 나 Application 에서의 Explicit GC 를 원천적으로 방지하고자 할 경우에 사용된다 . -XX:PermSize=<size> Permanent Generation 의 최초 크기를 지정한다 . Permanent Generation 의 최대 크기는 MaxPermSize 옵션에 의해 지정된다 . 많은 수의 Class 를 로딩하는 Application 은 큰 크기의 Permanent Generation 을 필요로 한며 , Permanent Generation 의 크기가 작아서 Class 를 로딩하는 못하면 Out Of Memory Error 가 발생한다 .
11. Default Description -XX:SurvivorRatio= <value> 5~6 Survivor Space 와 Eden Space 의 비율을 지정한다 . 만일 이 값이 6 이면 , To Survivor Ratio:From Survivor Ratio:Eden Space = 1:1:6 이 된다 . 즉 , 하나의 Survivor Space 의 크기가 Young Generation 의 1/8 이 된다 . Survivor Space 의 크기가 크면 Tenured Generation 으로 옮겨가지 전의 중간 버퍼 영역이 커지는 셈이다 . 따라서 Full GC 의 빈도를 줄이는 역할을 할 수 있다 . 반면 Eden Space 의 크기가 줄어들므로 Minor GC 가 자주 발생하게 된다 . -XX:+UseCMSCompactAtFullCollection True CMS Collector 에 의한 Concurrent GC 수행 시 Compaction 작업을 수행할 지의 여부를 지정한다 . 이 값이 True 이면 , Old Generation 의 Fragmentation 에 의해 Promotion Failure 가 발생할 때 Stop The World 방식의 Full GC 를 수행하며 Compaction 이 이루어진다 . JDK 1.4.2 부터는 True 가 Default 값이다 . -XX:+UseConcMarkSweepGC False CMS Collector 를 사용할 지의 여부를 지정한다 . GC Pause 에 의한 사용자 응답 시간 저하 현상을 줄이고자 할 경우에 사용이 권장된다 . -XX:+UseParNewGC CMS Collector 를 사용하는 경우에 한해서 , Young Generation 에 대해서 Parallel Collection 을 수행할 지의 여부를 지정한다 .