SlideShare une entreprise Scribd logo
1  sur  20
Garbage Collection 김종선 2010.12.07
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.
Minor GC Full GC
Minor GC Full GC
GC 발생 후
Option  지정하기  ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
JVM_ARGS=“- Xss 1m  - Xms 512m   - Xmx 512m“ JVM_ARGS="$JVM_ARGS  - XX:PermSize =256m  - XX:MaxPermSize =256m"
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  옵션으로 지정한 크기만큼 커진다 .
JVM_ARGS=&quot;-J- server &quot;  JVM_ARGS=&quot;$JVM_ARGS - Xss 512k  - Xmn 128m - Xms 768m - Xmx 768m&quot; JVM_ARGS=&quot;$JVM_ARGS - XX:PermSize =128m  - XX:MaxPermSize =128m&quot; JVM_ARGS=&quot;$JVM_ARGS - XX:SurvivorRatio =14  - XX:MaxTenuringThreshold =15  - XX:GCTimeRatio =19  -XX:+ DisableExplicitGC   -XX:+ UseParNewGC   -XX:+ CMSParallelRemarkEnabled   -XX:+ UseConcMarkSweepGC   -XX:+ UseCMSCompactAtFullCollection   -XX:+ CMSClassUnloadingEnabled   -XX:+ CMSPermGenSweepingEnabled   - XX:CMSInitiatingOccupancyFraction =60  -XX:+PrintGCDetails  -XX:+PrintGCTimeStamps“
  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 가 발생한다 .
  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 을 수행할 지의 여부를 지정한다 .
 
 
 
 
 
 
 
JVM_ARGS=&quot;-J- server &quot;  JVM_ARGS=&quot;$JVM_ARGS - Xss 512k  - Xmn 128m - Xms 768m - Xmx 768m&quot; JVM_ARGS=&quot;$JVM_ARGS - XX:PermSize =128m  - XX:MaxPermSize =128m&quot; JVM_ARGS=&quot;$JVM_ARGS - XX:SurvivorRatio =14  - XX:MaxTenuringThreshold =15  - XX:GCTimeRatio =19  -XX:+ DisableExplicitGC   -XX:+ UseParNewGC   -XX:+ CMSParallelRemarkEnabled   -XX:+ UseConcMarkSweepGC   -XX:+ UseCMSCompactAtFullCollection   -XX:+ CMSClassUnloadingEnabled   -XX:+ CMSPermGenSweepingEnabled   - XX:CMSInitiatingOccupancyFraction =60  -XX:+PrintGCDetails  -XX:+PrintGCTimeStamps“
 

Contenu connexe

Plus de Samsung Electronics

Plus de Samsung Electronics (20)

회계 천재가 된 홍대리2
회계 천재가 된 홍대리2회계 천재가 된 홍대리2
회계 천재가 된 홍대리2
 
회계 천재가 된 홍대리1
회계 천재가 된 홍대리1회계 천재가 된 홍대리1
회계 천재가 된 홍대리1
 
2011년 사명선언문
2011년 사명선언문2011년 사명선언문
2011년 사명선언문
 
2011 김종선 비전맵
2011 김종선 비전맵2011 김종선 비전맵
2011 김종선 비전맵
 
글쓰기로 배우는 행복한 인생
글쓰기로 배우는 행복한 인생글쓰기로 배우는 행복한 인생
글쓰기로 배우는 행복한 인생
 
Open standard
Open standardOpen standard
Open standard
 
나는 누구인가
나는 누구인가나는 누구인가
나는 누구인가
 
김쉡의 휴가요리 24선
김쉡의 휴가요리 24선김쉡의 휴가요리 24선
김쉡의 휴가요리 24선
 
DISC분석을 위한 마피아게임
DISC분석을 위한 마피아게임DISC분석을 위한 마피아게임
DISC분석을 위한 마피아게임
 
Service-Oriented Architecture in a Nutshell
Service-Oriented Architecture in a NutshellService-Oriented Architecture in a Nutshell
Service-Oriented Architecture in a Nutshell
 
Test-Driven Development Introduction
Test-Driven Development IntroductionTest-Driven Development Introduction
Test-Driven Development Introduction
 
Jack Welch 'Winning'
Jack Welch 'Winning'Jack Welch 'Winning'
Jack Welch 'Winning'
 
Software Inspection
Software InspectionSoftware Inspection
Software Inspection
 
Tech
TechTech
Tech
 
1%씩 성장하기
1%씩 성장하기1%씩 성장하기
1%씩 성장하기
 
애자일프랙티스
애자일프랙티스애자일프랙티스
애자일프랙티스
 
비전워크샵
비전워크샵비전워크샵
비전워크샵
 
김종선 2008비전휠
김종선 2008비전휠김종선 2008비전휠
김종선 2008비전휠
 
김종선 2010비전휠
김종선 2010비전휠김종선 2010비전휠
김종선 2010비전휠
 
김종선 2009비전휠
김종선 2009비전휠김종선 2009비전휠
김종선 2009비전휠
 

Garbage Collection

  • 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.
  • 6.
  • 7. JVM_ARGS=“- Xss 1m - Xms 512m - Xmx 512m“ JVM_ARGS=&quot;$JVM_ARGS - XX:PermSize =256m - XX:MaxPermSize =256m&quot;
  • 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 옵션으로 지정한 크기만큼 커진다 .
  • 9. JVM_ARGS=&quot;-J- server &quot; JVM_ARGS=&quot;$JVM_ARGS - Xss 512k - Xmn 128m - Xms 768m - Xmx 768m&quot; JVM_ARGS=&quot;$JVM_ARGS - XX:PermSize =128m - XX:MaxPermSize =128m&quot; JVM_ARGS=&quot;$JVM_ARGS - XX:SurvivorRatio =14 - XX:MaxTenuringThreshold =15 - XX:GCTimeRatio =19 -XX:+ DisableExplicitGC -XX:+ UseParNewGC -XX:+ CMSParallelRemarkEnabled -XX:+ UseConcMarkSweepGC -XX:+ UseCMSCompactAtFullCollection -XX:+ CMSClassUnloadingEnabled -XX:+ CMSPermGenSweepingEnabled - XX:CMSInitiatingOccupancyFraction =60 -XX:+PrintGCDetails -XX:+PrintGCTimeStamps“
  • 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 을 수행할 지의 여부를 지정한다 .
  • 12.  
  • 13.  
  • 14.  
  • 15.  
  • 16.  
  • 17.  
  • 18.  
  • 19. JVM_ARGS=&quot;-J- server &quot; JVM_ARGS=&quot;$JVM_ARGS - Xss 512k - Xmn 128m - Xms 768m - Xmx 768m&quot; JVM_ARGS=&quot;$JVM_ARGS - XX:PermSize =128m - XX:MaxPermSize =128m&quot; JVM_ARGS=&quot;$JVM_ARGS - XX:SurvivorRatio =14 - XX:MaxTenuringThreshold =15 - XX:GCTimeRatio =19 -XX:+ DisableExplicitGC -XX:+ UseParNewGC -XX:+ CMSParallelRemarkEnabled -XX:+ UseConcMarkSweepGC -XX:+ UseCMSCompactAtFullCollection -XX:+ CMSClassUnloadingEnabled -XX:+ CMSPermGenSweepingEnabled - XX:CMSInitiatingOccupancyFraction =60 -XX:+PrintGCDetails -XX:+PrintGCTimeStamps“
  • 20.