我有一个带有许多wpf控件的应用程序,但一次只能看到少数几个。 当用户滚动项目时,我们会在每个视图模型的弱引用中“缓存”图像。
即使工作集是260MB并且存在大量RAM,弱引用引用的对象也是垃圾收集的。进程以x86运行。
为什么GC如此激进有什么理由?
这当然是临时解决方案,我们正在开发自定义缓存服务,但我对此行为感到惊讶。
答案 0 :(得分:0)
感谢Yuval的评论。我已经做了一个答案,帮助其他人相信弱引用可以用于缓存,即使有足够的可用内存。
不幸的是,即使你的应用程序远远没有内存限制,弱引用也会被垃圾收集。似乎弱引用总是在第0代扫描中收集。