2014. 12. 9. 10:13

Hotspot JVM GC 방식 

 

 Young Gen

 Old Gen

 GC 방식

 장/단점

 Serial GC

 Generation Algorithm

 Mark-Compact Algorithm

 1) Old 살아있는 객체 식별(Mark)

 2) 힙 앞부분부터 확인해 살아 있는 것만 남김(Sweep)

 3) 각 개체들이 연속되게 쌓이도록 가장 앞 부분부터 적재(Compact)

- 운영서버에 권고하지 않음

 Parallel GC

 Generation Algorithm

 (Thread 여러개)

 Mark-Compact Algorithm

 Serial GC와 동일하나 Young Gen을 병렬처리 하여 처리량을 늘림으로써 빠르게 객체를 처리할 수 있음

 

 Parallel Old GC

 Generation Algorithm

 (Thread 여러개)

 Parallel Compaction Algorithm (Mark-Summary-Compaction)

Summary 단계는 앞서 GC를 수행한 영역에 대해서 별도로 살아있는 객체를 식별한다는 점(Mark-Sweep-Compaction 차이)

- 기존 Parallel GC에서 Old Gen 처리량도 늘리자는 취지

 CMS

 Parallel Copy Algorithm

 Concurrent Mark-and-Sweep Algorithm

1) Initial Mark

2) Concurrent Mark

3) Remark

4) Concurrent Sweep

- 응답시간 개선에 집중

- 시간 절약 효과

 G1 GC

 Evacution Pause

 Concurrent Marking

1) Concurrent Marker가 각 힙 region 내의 살아있는 object 양 계산(Garbage가 많은 region 선택)

2) Young GC

   살아있는 object는 Survivor region과 Old region으로 이동(Stop-the-copy)

3) Compaction

   Large Chunk 로 Free space 병합 Fragmentaion 방지

  Fast Allocation Free List를 사용하지 않음, Linear 방식, TLAB 방식

- Gen 물리적 구분 사라짐

- 힙을 region으로 나눠 쪼개짐

- Garbage Object로 가득찬 Region 부터 Collection 수행

- copy 작업은 pause Time의 가장 큰 요인

 

※ 참고사이트 : http://dragon1.tistory.com/33

'Java' 카테고리의 다른 글

JVM 현재 설정된 설정값 확인  (0) 2015.06.24
“top threads” plugin for JConsole  (0) 2014.12.16
[모델1] 간단한 로그인 시스템  (0) 2014.11.01
Path 클래스 사용하기  (0) 2014.10.01
singleton 패턴  (0) 2014.10.01
Posted by 아도니우스