2015-10-13 19 views
1

我在ScrollViewer中有Image,我將不時更改BitmapImage這是圖像的來源。我發現應用程序的內存使用量超過了2GB,儘管圖像總共只有100MB! (我不知道超過2GB可以分配給一個應用程序)並且有時會崩潰。內存使用量確實每隔一段時間變小,但速度不夠快。我的假設(由於缺乏更好的設計,歡迎任何其他想法)是ScrollViewer正在緩存圖像,即使在BitmapImage被另一個替換之後也不會釋放該緩存。ScrollViewer中的圖像發生內存泄漏

有沒有辦法告訴ScrollViewer不要緩存圖像?

此外,如何檢查內存在哪裏?我使用的是VS2015,診斷工具顯示的所有內存都是使用的內存總量。

+0

當您從滾動查看器中移除位圖時,是否處理該位圖? –

+0

@GianPaolo a)它是一個靜態的BitmapImages組,總計100MB。 b)我究竟會如何處置BitmapImage(在回答這個問題之前 - 請參閱[this](http://stackoverflow.com/questions/33108983/dispose-of-a-bitmapimage))。 – ispiro

+0

如何直接在XAML中將圖像添加到ScrollViewer? – Dani

回答

3

VisualStudio 2013將允許您profile memory usage。或者,您可以使用PerfView(由Microsoft提供)。兩者都會告訴你哪些物體在吞噬你的記憶。我已成功使用這兩個選項來確定類似於您的問題的根源。還有幾個第三方工具可以做同樣的事情。

也許對this other question的回覆是有幫助的。看起來你需要凍結BitmapImages,然後再將它們作爲你的ImageScrollViewer的來源。

我會發布此作爲評論,因爲我實際上沒有解決方案,但我沒有足夠的代表。

+0

謝謝。 UWP中不提供凍結功能。至於其他 - 謝謝。他們至少是部分答案。 +1。 – ispiro