1.가비지 컬렉터
-C#에서 제공하는 메모리 관리 시스템
-더 이상 사용하지 않는 객체(접근 불가능한)를 메모리에서 자동으로 해제 시켜주는 기능.
- 메모리 신경을 덜 쓸 수 있어 프로그램 구조가 단순해진다.
2.콤팩트 작업
-사용 중인(혹인 도달 가능한) 객체들을 한쪽으로 차곡차곡 옮겨서 조각난 메모리를 큰 메모리로 만드는 일.

3.finalizer(종료자)
-가비지컬렉터가 있다고 하지만
데이터베이스연결,GDI+객체,COM객체,시스템객체는 비 관리 소스는 개발자가 직접 관리 해야 한다.
-그래서 C#은 메모리 관리에 필요한 finalizer 및 IDisposable 인터페이스를 제공한다.
1)finalizer(종료자)

-하지만 종료자는 많은 단점을 가진다.
-종료자가 사용됐지만 우리가 원하는 시점에 객체를 해제하는 기능이 이루어지지 않는다.
-종료자가 있는 객체는 종료자를 호출해야 함으로 즉각적으로 메모리해제가 이루어지지 않는다.
-그러므로 메모리에 더 오래 남아있게 되고 성능이 나빠지는 결과를 초래한다.

-결론
종료자는 여러 단점이 있으므로 비 관리 리소스를 해제할 때는 IDisposable 인터페이스를 사용하자(아이템17에 후술)
'C# > 이펙티브 C#' 카테고리의 다른 글
| 아이템 13. 정적 클래스 멤버를 올바르게 초기화하라. (0) | 2023.07.05 |
|---|---|
| 아이템12. 할당 구문보다 멤버 초기화 구문이 좋다. (0) | 2023.07.03 |
| 아이템9.박싱과 언박싱을 최소화하라. (0) | 2023.06.30 |
| 아이템8.이벤트 호출 시에는 null 조건 연산자를 사용하라. (0) | 2023.06.29 |
| 아이템7. 델리게이트를 이용하여 콜백을 표현하라. (0) | 2023.06.25 |