.NET

Memory Management & GC

Garbage Collection, 세대, 종료화(finalization), IDisposable, using 문, 메모리 누수, 프로파일링

22 면접 질문·
Senior
1

.NET의 Garbage Collector(GC)란 무엇인가요?

답변

Garbage Collector는 managed heap에서 사용되지 않는 객체를 해제하는 자동 메모리 관리 메커니즘입니다. 메모리를 수동으로 해제해야 하는 C/C++와 달리, 메모리 누수를 방지하기 위해 백그라운드에서 자동으로 실행됩니다. GC는 객체 참조를 분석하여 애플리케이션의 root에서 더 이상 접근할 수 없는 객체를 수집합니다.

2

.NET의 Garbage Collector에는 어떤 세 가지 세대가 있나요?

답변

.NET GC는 세 가지 세대를 사용합니다. Gen0(짧은 수명의 신규 객체, 자주 수집됨), Gen1(중간 수명 객체, Gen0과 Gen2 사이의 버퍼 영역), Gen2(긴 수명의 객체, 비용이 크기 때문에 드물게 수집됨). 이 세대별 시스템은 객체의 80~90%를 차지하는 단명 객체(Gen0)를 먼저 수집하고 영속적인 객체(Gen2)를 자주 스캔하지 않음으로써 성능을 최적화합니다.

3

.NET의 Large Object Heap(LOH)이란 무엇인가요?

답변

Large Object Heap는 85 KB 이상의 객체를 위한 별도의 메모리 공간으로, 논리적으로 Gen2에 속합니다. 정기적으로 압축(compaction)되는 표준 heap과 달리, LOH는 큰 객체를 복사하는 비용을 피하기 위해 기본적으로 압축되지 않습니다. 이로 인해 메모리 단편화가 발생할 수 있습니다. .NET 4.5.1부터는 GCSettings.LargeObjectHeapCompactionMode를 사용해 LOH 압축을 수동으로 활성화할 수 있습니다.

4

.NET에서 IDisposable 패턴의 역할은 무엇인가요?

5

C#에서 using 문은 무엇을 합니까?

+19 면접 질문

다음 면접을 위해 .NET을 마스터하세요

모든 질문, flashcards, 기술 테스트, 코드 리뷰 연습, 면접 시뮬레이터에 접근하세요.

무료로 시작하기