我有一个需要字符串的哈希表。处置它们的最佳方式是什么? 使用哈希表后,我应该调用清除,然后将对象设置为空? 或者只是将哈希表对象设置为null就足够了?我是否应该通过将对象设置为null来处理Hashtable或字符串等对象?
0
A
回答
0
HashTable
没有实现IDisposable
所以你不能把它Dispose
,您可以指定对象null
和让垃圾回收利用它照顾。您无法预测垃圾回收器何时收集垃圾回收器,尽管您可以强制垃圾回收器使用GC.Collect
但不推荐使用垃圾回收器。
您可能会看到:Fundamentals of Garbage Collection
除了这个,你可以看看Dictionary<TKey, TValue> Class
这是通用实现HashTable
的。
1
其他人建议不要做任何事情,这是大多数情况。你不能在经典的C#术语中处理它,并且将它设置为空也应该是不必要的。如果你愿意的话,垃圾收集器将会完成它的工作。
所以让它。
我必须提供的一条建议可以帮助您让垃圾收集器完成其工作,将对象的生命周期限制为不超过您的需要。如果对象只需要为方法调用而生存,那么将变量的范围和底层对象的生命周期限制为该方法,不要将其提升为可能寿命更长的类成员。如果班级长时间滞留,该成员国就会与之一起生活。
声明变量和实例在你需要它的对象,只有在你需要它,并相信,垃圾收集器会回收内存在某些时候你是通过后。
1
设置一个变量设置为null将不能保证,这将是垃圾收集。如果其他变量引用同一个对象,那么在引用计数变为零之前,将不会收集所讨论的对象。
限制对象的范围也能有所帮助的对象是更可能的对象超出范围,将会被收取。对于那些没有像垃圾收集那样交给文件句柄的项目来说,实现一致性确实更有意义。
相关问题
- 1. 编译器是否将处置的对象设置为null?
- 2. 将字符串“null”作为Java中的对象处理
- 3. 我应该定义一个函数来处理一个字符串对象或一个unicode对象吗?
- 4. JSON API是否应该返回字符串或JavaScript对象?
- 5. 为什么使用后应该将对象设置为null是否有原因?
- 6. 在java中清除对象或将对象设置为null
- 7. 我应该总是验证对象是否为NULL?
- 8. Thymeleaf通过设置对象为对象的成员来控制
- 9. 删除对象或设置为null
- 10. 对象== nil或nil ==对象来检查对象是否为零?
- 11. 对象设置为NULL
- 12. 检查对象是否为空或NULL
- 13. JavaScript是否通过引用或按值处理对象?
- 14. 是否为null对象?
- 15. 反应setState设置为字符串,而不是对象
- 16. telerik RadDatePicker将日期设置为字符串而不是对象?
- 17. 使用完成后,是否值得将对象设置为null?
- 18. 将Javascript对象或jQuery对象转换为查询字符串
- 19. 通过将字符串附加到对象来生成JavaScript对象名称
- 20. Android:处理可以是字符串或数组的json对象
- 21. PHP - 将对象作为对象处理
- 22. Android - 我是否应该通过saveinstancestate保存我的对象或其ID?
- 23. 我是否在更改该对象的对象或副本?
- 24. 使用IOCP时,我应该将WSAOVERLAPPED的hEvent设置为NULL还是设置为WSAEVENT对象的有效句柄?
- 25. 是否有任何理由在finally块中将对象设置为null?
- 26. 未将对象引用设置为对象的实例。 vb.net查找字符串
- 27. 的NullReferenceException是未处理?对象引用不设置到对象
- 28. 转换“字符串对象”为对象
- 29. 我应该将字符串设置为无或空吗?
- 30. 通过字符串获取JSON对象
你只是什么也不做,垃圾收集器会为你做它 – 2013-02-20 05:05:45
GC则需要数小时才能运行。如果你有一个特别大的字典,是否值得在Dispose()函数中调用Clear()方法?这就是我一直所做的。 – Brain2000 2015-07-15 18:33:24