【发布时间】:2010-10-02 04:13:38
【问题描述】:
讨论IDisposable 模式的指南/注释/文章都没有建议在Dispose(bool) 方法中将内部成员设置为null(尤其是当它们是占用内存的野兽时)。
在调试内部基准测试工具时,我开始意识到它的重要性。过去发生的事情是,这个缓冲区里面包含一个大数组。我们曾经为整个基准测试程序使用静态缓冲区。一旦我们完成了缓冲区,我们就无法释放这个内部数组,我们也不能让这个缓冲区可释放(因为它是静态的)。
所以,我相信,在调用Dispose() 之后,该类应该尽其所能释放它正在使用的所有资源并使它们再次可用,即使被处置的对象本身没有被回收通过 GC,并且不将成员设置为 null,因此,不允许 GC 收集内部对象意味着 Dispose 实现并不完美。
您对此有何看法?
【问题讨论】:
标签: c# .net memory-management garbage-collection dispose