【发布时间】:2011-03-17 07:19:24
【问题描述】:
我在字典中保存了一个大缓存,其值为IEnumerable<KeyValuePair<DateTime, Double>>。我定期从字典中删除项目并定期将项目添加到字典中。我时不时地得到一个 System.OutOfMemoryException。我想知道为什么垃圾收集器不来救我?
【问题讨论】:
-
您在缓存中保留了多少项? 1000? 100万?我可以看到大对象堆可能会变得碎片化,并且您将无法在某个点之后增长字典。
-
您确实意识到存储在字典中的项目不会被垃圾回收吧?至少要等到它们从字典中删除,并发布任何其他参考文献。
-
我建议运行内存分析器来查看内存中保存了哪些对象。或者获取故障转储并检查堆使用情况。
-
为什么垃圾收集器不来救我? GC 不会阻止你在脚下开枪;)
标签: c# memory dictionary garbage-collection