我在一个项目中工作,其中有很多对象由少数几个类实例化,并在应用程序的生命周期内保持在内存中。经常会出现OutOfMemoryExceptions引发的许多内存泄漏。似乎在实例化的对象超出范围后,它们没有被垃圾回收。
我已经确定问题主要是与附加到长期存在的对象上的事件处理程序有关,这些处理程序从未分离,从而导致长期存在的对象仍然引用超出范围的对象,这些对象将永远不会被垃圾回收。
我的同事提出的解决方案是:全面在所有类上实现IDisposable接口,在Dispose方法中将对象中的所有引用设置为null,并分离您附加的所有事件。
我认为这是一个非常糟糕的想法。首先,因为这是“过度设计”,大部分问题可以通过修复一些问题区域来解决;其次,因为IDisposable的目的是释放对象控制的任何非托管资源,而不是因为您不信任垃圾回收器。到目前为止,我的观点听起来都没有人理睬。我该如何说服他们这是徒劳无功的呢?