레거시 응용 프로그램에서 메모리 누수가 발생하여 코드를 잘 알지 못합니다. 나는 MemProfiler를 사용하여 분석하여 점점 많은 수의 객체가 TimerCall
객체에 의해 참조된다는 것을 알아 냈습니다. 이 TimerCallback
은 _TimerCallback
개체로 참조되며 루트의 하위 항목입니다. 그래프는 Root
->_TimerCallback
->TimerCallback
->MyObject
입니다. MyObject
이후메모리 누수 : 루트가 참조하는 TimerCallbacks 객체
처럼 여러 통화가 생성자에 TimerCallback
필요 :이처럼 그것을 할 나에게 매우 어색하게 보이는
new MyObject(int timeout, new TimerCallback(SomeCallbackMethod));
솔직히,하지만 내가 쓴대로 레거시 응용 프로그램의과 "C 스타일"C#으로 많은 null 할당과 Dispose()
이 호출되었습니다 ...
그래서 TimerCallback
에 대한 참조를 루트에서 제거 할 수 있습니까?
해결 방법을 찾으셨습니까? 내 앱에는 타이머 코드가 있지만 타이머를 완료하면 항상 타이머를 처리하고 동일한 문제가 발생합니다. – Jimbidf