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 |