가비지 컬렉션:그것은 필요한 설정하는 대체 null 에는 폐기하는 방법?

StackOverflow https://stackoverflow.com/questions/49950

  •  09-06-2019
  •  | 
  •  

문제

그것은 필요한 설정하는 대체 null 를 구현하는 경우 Dispose() 방법?

도움이 되었습니까?

해결책

일반적이지 않습니다.

쓰레기 수집가를 찾 뿌리를 개체 및 순환 의존하지 않을 방지 수집하지 않으면 개체입니다.

경고가 있:면 개체에 대한 참조가 있는 객체 B B 개체되고 처리할 수 있습을 청소하는 관계 또는 다른 당신은 끝날 수 있었습니다.가장 일반적인 이면에서의 이벤트 처리기(참조에서는 A>B 에는 B 컨트롤하기 때문에,그것에 가입한 이벤트에).이 경우에는 경우는 여전히 뿌리,B 수집할 수 없더라도 그것은 삭제됩니다.

다른 팁

클래스 경우에는 폐기하는 방법는 것이 좋습니다입니다.는 이유 뒤로는 처분을 실행할 때라고 하는 반면,객체를 설정하기 null 단순히 추가 진입을 완료 큐에서는 GC,그리고 우리는 없 를 결정할 때 GC 실행됩니다.

없는 성능을 구현하는 폐기하는 방법에만 사용하는 리소스 관리(예:배열)기 때문에 그들은 자동으로 회수하여 쓰레기를 수집기.를 사용하여 폐기하는 방법에 주로 관리되는 개체를 사용하는 네이티브 리소스 및 COM 체에 노출되는.NET Framework.관리 물체를 사용하는 출원(과 같은 을 클래스)를 구현하 IDisposable 인터페이스입니다.

우아한 의미의 inoking 폐기 채택 사용한"사용"입니다.당신의 사람들을 위해 수 있습에 익숙하지 않을 구축,그것은 수단을 제공 implicity invoke()폐기에 인스턴스를 구현하는 IDisposable 경우에도 예외가 발생 이후의 동작이다.다음의 예를 사용하여 구성:

using(DisposableClass dc = new DisposableClass()) 
{ 
   dc.PerformActionOnUmanagedResources(); 
   dc.PerformAnotherActionOnUmanagedResources(); 
} 

에 이전 예 경우 예외가 발생했에 PerformActionOnUmanagedResources()메소드지만,PerformAnotherActionOnUmanagedResources()메서드 처리 되지 않는,사용이 아직도 implicity 를 호출하여 폐기하는 방법에 대 dc 을 보장 realese 의 모든 관리되지 않는 자원입니다.

의 목적을 폐기하는 방법을 출시 모든 자원과 관련된 클래스고,부모의 클래스를 호출하여 기본 클래스 dispose 방법입니다.의 읽기에 대해 명확하게 약간의:

http://msdn.microsoft.com/en-us/library/fs2xkftw.aspx

당신은 무엇을 의미하"대체"?

당신은 적어도 Dispose()를 호출에 모든 멤버 구현하 IDisposable,하지만.

그것은 필요하지 않습으로 다른 사람들이 지적하지만,그것은 좋은 연습하고 디버깅하는 데 도움이됩.

한 번체가 완료되면으로 포인터를 사용하여 설정한 다음 그것을 null 로을 방지하는 데 도움이 다시 사용하는 개체 이상(당신을 얻을 것 null 참조은 예외).

같은 논리에 적용하여 설정하는 회원 포인터가 null 로 C++에서 소멸자면 삭제됩니다.이 없 하지만,문제 해결에 도움이다.

생각의 목적에 대한 처분할 수 있는 방법을 조금:그것은 일반적으로 있기 때문에 당신을 들고 일부 자원을 공개되지 않습니다 동안 가비지 컬렉션입니다.이것은 일반적으로 다음과 같이 데이터베이스 연결 또는 파일을 처리합니다.따라서,일단 폐기 메소드가 호출되는 모든 그러한 자원이 출시되었습니다.

나는 주장을 널 떠 더 유해 그는 것은"좀비"물체 주위에 떠있는.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top