C#/이펙티브 C#

아이템11. NET 리소스 관리에 대한 이해

공부를하자 2023. 7. 2. 15:09

1.가비지 컬렉터

 -C#에서 제공하는 메모리 관리 시스템

 - 이상 사용하지 않는 객체(접근 불가능한) 메모리에서 자동으로 해제 시켜주는 기능.

 - 메모리 신경을 있어 프로그램 구조가 단순해진다.

2.콤팩트 작업

 -사용 중인(혹인 도달 가능한) 객체들을 한쪽으로 차곡차곡 옮겨서 조각난 메모리를 메모리로 만드는 .

3.finalizer(종료자)

-가비지컬렉터가 있다고 하지만

 데이터베이스연결,GDI+객체,COM객체,시스템객체는 관리 소스는 개발자가 직접 관리 해야 한다.

-그래서 C# 메모리 관리에 필요한 finalizer IDisposable 인터페이스를 제공한다.

1)finalizer(종료자)

 

-하지만 종료자는 많은 단점을 가진다.

-종료자가 사용됐지만 우리가 원하는 시점에 객체를 해제하는 기능이 이루어지지 않는다.

-종료자가 있는 객체는 종료자를 호출해야 함으로 즉각적으로 메모리해제가 이루어지지 않는다.

-그러므로 메모리에 오래 남아있게 되고 성능이 나빠지는 결과를 초래한다.

-결론

종료자는 여러 단점이 있으므로 관리 리소스를 해제할 때는 IDisposable 인터페이스를 사용하자(아이템17 후술)