【发布时间】:2010-11-10 11:18:36
【问题描述】:
场景
- 假设我已经决定我真的需要调用 GC.Collect();
- 在实际调用此方法之前,我需要做些什么来确保对象已准备好进行适当的垃圾回收?
- 将 null 分配给对象的所有属性就足够了吗?还是只是将 null 分配给对象本身?
如果你真的需要知道为什么.....
- 我在 WCF 中有一个分布式应用程序,它每隔几秒通过网络发送一个 DataContract,其中包含 8 个字典作为 DataMembers。
- 这是大量数据,当它进入客户端界面时,会创建一个全新的 DataContract 对象,并且应用程序的内存使用量增长得如此之大,以至于我遇到了 OutOfMemory 异常。
谢谢
编辑
感谢大家的cmet和回答,看来大家意见一致。
- 我无法理解的是,由于连接一直处于打开状态,我如何才能正确处理。
- 从传入的对象复制数据后,我不再需要该对象,那么只需在该 DataContract 对象上实现 IDisposable 就足够了吗?
- 我原来的问题在这里 - Distributed OutOfMemory Exceptions
【问题讨论】:
-
"我遇到 OutOfMemory 异常" - 垃圾收集器被设计为在此之前自动启动。如果不是,那么您可能持有一些参考资料的时间比您需要的时间长。
-
我怎么知道我持有参考资料?
-
因为它没有被收集(我承认这听起来有点鸡/鸡蛋)
标签: c# garbage-collection