GC(Garbage Collector)가비지 컬렉터

2022. 12. 13. 10:28C#

GC(Garbage Collector)

C# .Net에서 제공하는 메모리를 자동으로 관리해주는 역할을 한다.


 

C#에서는 가비지 컬렉터의 가비지 컬렉션 방식

 

  • 프로그램에서 더 이상 사용하지 않는 객체를 찾아냄(세대별로 관리)
  • 가비지가 사용되는 리소스를 회수 (메모리 회수)
  • 회수 후 객체 재배치
  • 0세대 : 새로 할당된 객체들, 임시 객체
    • 가비지 컬렉션이 가장 많이 수행되는 세대
    • 메모리에서 가장 빨리 해제될 것 같은 세대
    • 임계치에 도달하면 가비지 컬렉션 수행
  • 1세대 : 0세대 갑지ㅣ 컬렉션이 일어나고 해제되지 않는 객체들이 승격된 세대
    • 1세대 임계치에 도달하면 0 ~ 1세대 가비지 컬렉션 수행
  • 2세데 : 가장 오래 남아있을 것 같은 객체들, 1세대에서 승격
    • 2세대에서 임계치에 도달하면 0 ~ 2 세대 가비지 컬렉션을 수행
  • 세대별 임계값은 프로세스가 실행됨에 따라 조정됨

가비지 컬렉터를 다루면서 몇 가지 주의할점

  • 메모리 해제는 자동으로 일어나지만 이는 가비지에 한정
  • 가비지라고 판단을 못할 경우 , 해제해야 하는 메모리지만 해제하지 못해 메모리 누수가 발생 어디선가 반환되어야 하는 메모리를 의도치 않게  참조하고 있는경우가 생길수도 있다.
  • 가비지 컬렉터의 활동을 자동으로 일어나므로, 최대한 가비지를 줄여주는게 가장 좋을것 같다.

 

 

 

 

'C#' 카테고리의 다른 글

c# 파일다루기  (0) 2022.08.10
유니티를 쓰기위한 C#  (0) 2022.07.07