2014-09-26 56 views
0

我有一個包含許多wpf控件的應用程序,但只有很少的應用程序可以在同一時間顯示。 隨着用戶滾動槽項目,我們在每個視圖模型的弱引用中「緩存」圖像。即使我有足夠的可用內存,如何阻止弱引用丟失

儘管工作集是260MB,並且有大量的RAM引用弱引用的可用對象被垃圾收集。進程作爲x86運行。

GC有那麼激烈的原因嗎?

這是當然的解決方案,我們正在研究自定義緩存服務,但我對此行爲感到驚訝。

+4

GC運行行爲不確定。當第0代中的當前段滿時,它將運行。你不能依靠它不運行,以保持你的弱引用活着。如果需要,請使用強大的參考緩存機制。 – 2014-09-26 10:52:59

+3

另外考慮這一點 - 如果你在他們已經GC'ed時仍然需要你的引用可能表明這些不應該是一個弱引用,你可能想要有一些其他的方式來緩存它們。 – decPL 2014-09-26 10:55:40

回答

0

感謝Yuval的評論。我已經做出了一個答案,即使有足夠的內存可用,也可以幫助別人認爲弱引用可以用於緩存。

不幸的是,即使您的應用程序無法接近內存限制,弱引用也會被垃圾收集。似乎弱代碼總是在第0代掃描時收集。

相關問題