GC(Garbage Collection)에는 serial방식과 Parallel방식이 있는데
single thread (32bit window)등 특수환경에서만 serial방식이 쓰이고, 대부분 Parallel 방식이 쓰인다.
serial방식의 경우, 어플리케이션을 freezing시켜 버린다.
GC의 중요한 2가지 기능별 분류:
CMS GC(concurrent-mark-sweep) :
- 동시에 여러Thread를 이용해서 mark하고 sweep.
- 일반적으로 STW(Stop-The-World)를 유발하지 않지만 아래2가지 경우 STW 발생가능..
a. Initial Root 마킹
b. 동작중에 앱의 heap 상태 변경으로 재구동 필요시
G1 GC(Garbage first Collector - JDK1.7u4 에서 4GB 이상 heap을 우선처리하기 위해 등장 함)
- JDK1.8u20 에서는 string dup제거 로직도 추가됨
추가로,
Java8에선 PermGen (class 메타데이타 저장소)가 없어짐. OOM을 많이 유발하던 부분임.
CMS GC의 버그는 1.7에서 해결되었으며,
G1 GC의 버그는 1.8에서 해결됨. : 슬라이드 30페이지