안녕하세요. 섭군입니다.

C# MSDN 을 살펴보는 중 소멸자에 관한 새로운 부분을 발견하게 됐습니다.

소멸자는 개체의 기본 클래스에서 Finalize를 호출한다고 합니다.

만약 Finalize 함수가 존재하지 않는다면 함수를 생성하고 위 함수를 호출하는 코드로 변환한다고 합니다.

문제는 위의 사항이 아니라

빈 소멸자는 사용하지 말아야 합니다. 클래스에 소멸자가 포함된 경우 Finalize 큐에 엔트리가 만들어집니다. 소멸자를 호출하면 큐를 처리하기 위한 가비지 수집기가 호출됩니다. 그러므로 빈 소멸자는 성능 저하를 가져올 뿐입니다.

바로 저 부분인데요. 소멸자가 존재하면 특정 큐에 데이터가 추가가 되며, 이 비어있는 소멸자를 호출하기 위한 가비지 컬렉터가 호출되어서 가비지 컬렉터 자체에도

성능상 좋지 않다고 하네요.

이 글은 스프링노트에서 작성되었습니다.