C #에서 관리되지 않는 리소스를 정리하는 방법 [중복]

Jan 20 2021

이 수업이 있습니다.

    public class A
    {
//Some logic code here
    }

내 질문은 범위를 벗어난 후이 클래스를 기반으로 생성 된 객체를 어떻게 폐기하거나 파괴 할 수 있습니까?

예를 들면 :

  A a = new A();
    //some code here

애프터 //some code hereI는 싶어 a파괴되거나 배치 해제 그의 할당 된 메모리 오브젝트.

답변

1 ispiro Jan 20 2021 at 03:55

문제가 무엇인지에 대한 질문에서 분명해 보이기 때문에 제목을 무시하고 문제의 본문에 집중하겠습니다.

짧은 대답 : 당신은 그렇지 않습니다. 이것은 필요하다고 판단 될 때 가비지 컬렉터가 자동으로 처리합니다. (가비지 수집기를 실행할 필요가 없습니다. 자동으로 수행됩니다.)

그런 다음 가비지 수집기는 a예제 와 같이 범위를 벗어난 엔터티를 찾고 사용한 공간을 확보합니다. 그런 다음의 내부 a도 분명히 범위를 벗어난 것을 확인하고 (코드의 다른 곳에서 참조되지 않는 한) 처리합니다.

그렇긴해도 구현 Dispose하는 클래스의 변수를 사용할 때는 Dispose명시 적으로 호출 하거나 using블록을 사용 하여 수행 하는 것이 가장 좋습니다 . a폐기 될 때 실행될 종료자를 구현할 수도 있습니다 . 그러나 그것은 당신이 요구 한 것이 아닌 것 같습니다.