공부 기록/C#

[C#/TIL] 가비지 컬렉터의 세대(Generation)

톰마토 2025. 4. 24. 21:02
728x90

.NET의 GC(Garbage Collector, 가비지 컬렉터)에서 메모리 효율을 높이기 위해 객체를 세대로 나눈다. 오래 살아남은 객체일수록 검사를 덜 하고, 자주 생성되고 빨리 사라지는 객체를 집중적으로 검사할 수 있도록 세대 구조로 나누고 있다. 

 

  • Gen 0 - 가장 최근에 생성된 객체 / 가장 자주 검사됨. 빨리 죽는 객체 위주 
  • Gen 1 - Gen 0을 통과한 좀 더 오래된 객체 / 중간 단계, 검사횟수 덜 빈번하게 일어남
  • Gen 2 - Gen 1에서도 계속 살아남은 객체 / 가장 드물게 수거 

 

강제로 GC를 실행해줄 수도 있다. 

GC.Collect(0); // Gen 0만 수거
GC.Collect(1); // Gen 0 + Gen 1 수거
GC.Collect(2); // 전체 Full GC (Gen 0 ~ 2)

 

728x90