Open jaejlf opened 1 week ago
더 이상 참조되지 않는 객체
Heap 영역
Heap 영역의 재활용이 필요할 때
Young 영역
Old 영역
우선 GC의 대상인 Heap 영역은, 아래의 2가지 전제를 기반으로 설계되었다.
단일 스레드
Minor GC
멀티 스레드
🛣️ PLAB(Parallel Local Allocation Buffer)를 통해, Youung -> Old 영역으로 이동하기 전, 스레드마 Old 영역의 일부를 미리 할당받아 사용한다. (여러 개의 스레드가 동시에 수행되더라도 원활하게 GC가 동작할 수 있도록!)
애플리케이션의 스레드와 GC 스레드가 동시에 실행
Region
ZPage
Small 영역
Medium 영역
Large 영역
GC 종류별/알고리즘별 동작
GC(Garbage Collection)
더 이상 참조되지 않는 객체
를 찾아 메모리를 해제하는 역할Heap 영역
이 GC의 대상이다.Heap 영역의 재활용이 필요할 때
수행될 수 있다.Major GC, Minor GC
Young 영역
에 대한 가비지 컬렉션(Garbage Collection)Old 영역
에 대한 가비지 컬렉션(Garbage Collection)GC 동작 방식
우선 GC의 대상인 Heap 영역은, 아래의 2가지 전제를 기반으로 설계되었다.
GC의 종류
Serial GC (-XX:+UseSerialGC)
단일 스레드
로 동작한다.Parallel GC (-XX:+UseParallelGC)
Minor GC
를멀티 스레드
로, 동시에 GC를 수행한다.CMS GC (-XX:+UseConcMarkSweepGC)
애플리케이션의 스레드와 GC 스레드가 동시에 실행
되어 stop-the-world 시간을 최대한 줄이기 위한 전략G1GC (-XX:+UseG1GC)
Region
이라는 새로운 개념 도입! 각 Region이 Eden/Survivor/Old 영역을 담당한다.ZGC (-XX:+UseZGC)
ZPage
라는 논리적인 단위로 메모리를 구분Small 영역
, 중간 크기 객체들이 할당되는Medium 영역
, 큰 객체들이 할당되는Large 영역
으로 나뉜다.