相关疑难解决方法(0)

在.NET中使用后将对象设置为Null/Nothing

完成后,是否应该将所有对象设置为null(Nothing在VB.NET中)?

我理解在.NET中必须处理实现IDisposable接口的任何对象实例以释放一些资源,尽管对象在处理之后仍然可以是某种东西(因此isDisposed表单中的属性),所以我认为它仍然可以驻留在记忆中还是至少部分?

我也知道当一个对象超出范围时,它会被标记为收集准备好下一次垃圾收集器的传递(虽然这可能需要时间).

因此,考虑到这一点,将其设置为null加速系统释放内存,因为它不必解决它不再在范围内并且它们是否有任何不良副作用?

MSDN文章从未在示例中执行此操作,目前我这样做是因为我无法看到它的危害.但是我遇到了各种意见,所以任何评论都是有用的.

.net c# vb.net null memory-management

184
推荐指数
8
解决办法
9万
查看次数

在Dispose(bool)方法实现中,是否应该将成员设置为null?

讨论IDisposable模式的指南/注释/文章都没有提出应该nullDispose(bool)方法中设置内部成员(特别是如果它们是内存占用的野兽).

在调试内部基准测试工具时,我逐渐意识到它的重要性.过去常见的是,这个缓冲区内部包含一个大数组.我们过去常常为整个基准程序使用静态缓冲区.一旦我们完成缓冲区,我们就无法释放这个内部数组,也不能让这个缓冲区可释放(因为它是静态的).

所以,我相信,在Dispose()调用之后,类应该尽其所能,以便它释放它正在使用的所有资源并使它们再次可用,即使被处理的对象本身没有被GC收回,也没有设置因此,成员为null,不允许GC收集内部对象意味着Dispose实现并不完美.

你对此有何看法?

.net c# garbage-collection dispose memory-management

4
推荐指数
1
解决办法
1524
查看次数