遗留应用程序中存在内存泄漏,因此我不太了解代码。我用 MemProfiler 分析,发现越来越多的对象被对象引用TimerCall
。这些TimerCallback
s 被_TimerCallback
对象引用,它们是根的孩子。该图看起来像Root
-> _TimerCallback
-> TimerCallback
-> MyObject
。
由于在其构造函数中MyObject
需要 a TimerCallback
,因此有几个调用,例如:
new MyObject(int timeout, new TimerCallback(SomeCallbackMethod));
老实说,这样做对我来说看起来很尴尬,但当我写它时,它是一个遗留应用程序,它是用“C 风格”C# 编写的,有很多空赋值和Dispose()
调用......
那么如何TimerCallback
从根目录中删除这些引用呢?