[C#] 가비지 컬렉션

송칭·2024년 9월 24일
0

가비지 컬렉션
아무도 사용하지 않는 메모리 공간을 회수하는 것

C / C++ 같은 경우 Memory Allocator가 있으나 C#에서 보통은 쓰지 않는다.
대신 가비지 컬렉션이라는 개념으로 특정 메모리 공간을 가리키는 변수가 없다면 자동으로 해제한다. 메모리 관리를 개발자가 일일히 신경쓰지 않아도 되지만 바로 사라질 수도 있고, 조금의 시간이 흐른 뒤 사라질 수 있지만 이를 개발자가 고려할 수 없다.

프로그램이 새로운 객체를 만들 때, 이 객체는 힙(Heap) 메모리에 할당된다.
객체가 더 이상 프로그램에서 참조되지 않으면 가비지 컬렉터가 해당 객체가 사용되지 않는다고 판단한다. 즉, 특정 객체를 가리키는 변수나 참조가 모두 없어지면 해당 객체는 '가비지'로 간주되어 해당 객체가 점유하던 메모리를 해제하고 다시 사용할 수 있게 만들게 되는 것이다.

더 이상 참조되지 않는 객체들을 탐지하여 메모리를 해제하기에 메모리 관리에 개발자가 별로도 처리해줄 필요는 없다. 다만 언제 어떤 객체가 해제될 지 예측이 불가능해 특정 시점에 불필요한 성능 저하가 생길 수 있다는 것이 단점이다.

profile
게임 클라이언트

0개의 댓글