jaejlf / TIL

🌱 Today I Learned
2 stars 0 forks source link

[Java] GC(Garbage Collection) #18

Open jaejlf opened 1 week ago

jaejlf commented 1 week ago

GC(Garbage Collection)


Major GC, Minor GC


GC 동작 방식

우선 GC의 대상인 Heap 영역은, 아래의 2가지 전제를 기반으로 설계되었다.

  1. 객체는 생성된 후, 금방 Garbage가 된다.
    • 단편화 방지를 위해, 새로운 객체 할당만을 위한 전용 공간인 Eden 영역을 만들고, GC 당시 살아있는 객체들을 피신시키는 Survivor 영역을 구성하여, Garbage가 될 확률이 적은 객체를 따로 관리
  2. 오래된(Old) 객체가 새로운(Young) 객체를 참조할 일은 드물다.


GC의 종류

Serial GC (-XX:+UseSerialGC)

image


Parallel GC (-XX:+UseParallelGC)

image

🛣️ PLAB(Parallel Local Allocation Buffer)를 통해, Youung -> Old 영역으로 이동하기 전, 스레드마 Old 영역의 일부를 미리 할당받아 사용한다. (여러 개의 스레드가 동시에 수행되더라도 원활하게 GC가 동작할 수 있도록!)


CMS GC (-XX:+UseConcMarkSweepGC)


G1GC (-XX:+UseG1GC)

image


ZGC (-XX:+UseZGC)

image

jaejlf commented 1 week ago

GC 종류별/알고리즘별 동작