TIL

Chapter 6. 가비지 수집 기초

6.1 마크 앤 스위프

기본 개념을 쉽게 설명하고자 알고리즘을 단순화 했다. 실제 운영 JVM에서 GC가 수행되는 방법은 다르다.

image

  1. 할당 리스트를 순회하며 마크 비트를 지운다.
  2. GC 루트부터 살아 있는 객체를 찾는다.
  3. 찾은 객체마다 마크 비트를 세팅한다.
  4. 할당 리스트를 순회하면서 마크 비트가 세팅되지 않은 객체를 찾는다.
    1. 힙에서 메모리를 회수해 프리 리스트에 되돌린다.
    2. 할당 리스트에서 객체를 삭제한다.
      • 살아 있는 객체는 대부분 DFS 방식으로 찾는다. - 이렇게 생성된 객체 그래프를 라이프 객체 그래프(live object graph)라 한다. - 접근 가능한 객체의 전이 패쇄(transitive closure of rechable objects)라고도 한다.

6.1.1 가비지 수집 용어

6.2 핫스팟 런타임 개요

6.2.1 객체를 런타임에 표현하는 방법

6.2.2 GC 루트 및 아레나

6.3 할당과 수명

6.3.1 약한 세대별 가설

JVM 및 유사 소프트웨어 시스템에서 객체 수명은 이원적 분포 양상을 보인다. 거의 대부분의 객체는 아주 짧은 시간만 살아 있지만, 나머지 객체는 기대 수명이 훨씬 길다.

image

6.4 핫스팟의 가비지 수집

6.4.1 스레드 로컬 할당

6.4.2 반구형 수집

6.5 병렬 수집기

6.5.1 영 세대 병렬 수집

6.5.2 올드 세대 병렬 수집

6.5.3 병렬 수집기의 한계

6.6 할당의 역할