가비지 컬렉션 - G1 GC

yshjft·2022년 11월 27일
0

Java, OOP

목록 보기
19/27

G1 GC

  • Garbage First GC
    • Garbage만 있는 Region을 먼저 회수하기 때문에 Garbage First라고 한다.
  • Java 9 이상 부터 G1 GC를 기본 실행 방식으로 사용한다.
  • CMS GC의 메모리 단편화 문제를 해결한다.
  • Stop The World 시간을 최소화 한다..

Minor GC

  • Young Generation Region에서 발생하는 GC
  • Live Object를 Survivor Region 또는 OldRegion으로 이동
  • age 증가 발생
  • Stop The World 발생

Major GC

  • Initial Mark
    • Stop The World 발생
    • Old Region에 존재하는 객체들이 참조하는 Survivor Region을 찾는다.
  • Root Region Scan
    • Initial Mark에서 찾은 Survivor Region에 대한 GC 대상을 식별한다.
  • Concurrent Mark
    • 전체 힙 Region에 대해 스캔 작업을 진행하며 GC 대상 객체가 발견되지 않은 Region은 이후 단계를 처리하는데 제외된다.
  • Remark
    • Stop the World 발생
    • 최종적으로 GC 대상에서 제외될 객체를 식별한다.
    • 모든 객체가 Garbage라고 판단된 Region을 제거하고 반환한다.
    • SATB 기법을 사용
      • Stop The World 이후 살아있는 객체만 마킹
      • 다른 GC에 비해 Remark 단계 응답 시간이 더 빠르다
  • Clean UP
    • Stop the World 발생
    • 살아있는 객체가 가장 적은 Region 에 대한 GC 대상을 제거한다.
    • 빈 Region은 Available Region으로 변경한다.
  • Copy
    • GC 대상 Region이었지만 Cleanup 과정에서 완전히 비워지지 않은 Region의 살아남은 객체들을 새로운(Available/Unused) Region 에 복사하여 Compaction 작업을 수행한다.

G1 GC 참고1
G1 GC 참고2

profile
꾸준히 나아가자 🐢

0개의 댓글