CLR 메모리 해제의 비결정적 특성: GC와 Finalizer의 동작 원리
CLR 환경에서 객체의 생명 주기를 관리하는 메커니즘은 개발자가 직접 메모리를 제어하는 것과는 거리가 멀다. 특히 Finalizer의 존재와 GC.Collect()의 실제 의미를 정확히 이해하지 못하면, 리소스 누수나 예측 불가능한 성능 저하를 경험하게 된다.
Finalizer의 본질
C#에서 종료자는 다음과 같이 선언한다.
public sealed class ResourceHolder
{
private FileS ...
6월 25일 01:30에 게시됨
C#에서의 메모리 관리와 데이터 저장 위치 분석
CLR 환경에서의 메모리 구조
.NET Common Language Runtime(CLR) 위에서 실행되는 C# 애플리케이션은 논리적으로 두 가지 주요 메모리 영역으로 나뉩니다: 스택(Stack)과 힙(Heap, 즉 관리 힙). 이들 각각은 데이터의 종류와 수명에 따라 다르게 사용됩니다.
힙 (관리 힙)
동적 할당: 객체 인스턴스 및 복잡한 데이터 구조를 위한 동적 메모리 ...
6월 2일 00:44에 게시됨
CLR 및 관리, 비관리 코드 이해하기
이 문서에서는 C#에서의 `IntPtr`, 관리 코드(Managed Code)와 비관리 코드(Unmanaged Code)에 대해 살펴봅니다. 이들은 메모리 처리, 플랫폼 간 상호 작용, 저수준 작업을 수행할 때 매우 중요합니다.
1. 관리 코드와 자원
- 정의:
- 관리 코드: .NET CLR(Common Language Runtime)에 의해 관리되고 실행되는 코드입니다(C#, VB.NET, F# 등이 IL로 컴파일됨). CLR은 ...
5월 21일 09:46에 게시됨