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