Garbage Collection (GC)은 .NET에서 사용되지 않는 메모리를 자동으로 회수하는 메커니즘이며, 개발자가 직접 메모리를 관리하는 것에 대한 부담을 줄여줍니다.
C#에서는 객체를 new 키워드를 사용해 생성할 때마다 힙 메모리에 할당됩니다. 객체에 대한 참조가 더 이상 없게 되면, 그 객체는 가비지로 간주되며 GC에 의해 언젠가는 메모리에서 제거됩니다.
아래는 Garbage Collection에 대한 간단한 예제입니다:
using System;
public class DemoClass
{
~DemoClass() // 소멸자 (finalizer)
{
Console.WriteLine("DemoClass 객체가 소멸되었습니다.");
}
}
public class Program
{
public static void Main()
{
CreateAndReleaseObject();
// 가비지 컬렉션을 강제로 호출 (실제 환경에서는 일반적으로 이렇게 하지 않습니다.)
GC.Collect();
// 잠시 대기하여 GC가 객체를 회수하는 것을 확인
System.Threading.Thread.Sleep(1000);
}
static void CreateAndReleaseObject()
{
DemoClass demo = new DemoClass();
// 'demo' 객체에 대한 참조는 이 메소드가 끝나면 더 이상 존재하지 않습니다.
}
}
이 예제에서 DemoClass의 객체를 생성하고 그 참조를 릴리즈합니다. GC.Collect()를 호출하여 가비지 컬렉션을 강제로 수행하면 DemoClass의 소멸자(finalizer)가 호출되어 "DemoClass 객체가 소멸되었습니다."가 출력됩니다.
그러나 실제 상황에서는 GC.Collect()를 사용하여 가비지 컬렉션을 강제로 호출하는 것은 권장되지 않습니다. .NET 런타임은 메모리의 상태와 애플리케이션의 요구에 따라 가비지 컬렉션의 최적의 시점을 자동으로 결정합니다.
'워크 > C# 1.0' 카테고리의 다른 글
속성(Properties) 및 인덱서(Indexers) (0) | 2023.08.24 |
---|---|
통합된 Exception Handling (0) | 2023.08.24 |
Type-Safe 언어 (0) | 2023.08.24 |
객체 지향 프로그래밍(OOP) (0) | 2023.08.24 |
C# 1.0의 주요 특징: 초창기의 혁신 (0) | 2023.08.24 |