C# ScrollViewer中的图像导致内存泄漏

C# ScrollViewer中的图像导致内存泄漏,c#,.net,xaml,windows-store-apps,win-universal-app,C#,.net,Xaml,Windows Store Apps,Win Universal App,我在ScrollViewer中有一个图像,我正在不时更改图像源的位图图像。我发现应用程序的内存使用量超过2GB,尽管图像的总容量只有100MB左右!(我不知道一个应用程序可以分配超过2GB的内存)有时它会崩溃。内存使用率确实会越来越小,但速度不够快。我的假设(由于没有更好的,欢迎任何其他想法)是ScrollViewer正在缓存图像,即使BitmapImage被另一个替换后也不会释放该缓存 有没有办法告诉ScrollViewer不要缓存图像 此外,我如何检查内存的去向?我使用的是VS2015,所有

我在
ScrollViewer
中有一个
图像
,我正在不时更改图像源的
位图图像
。我发现应用程序的内存使用量超过2GB,尽管图像的总容量只有100MB左右!(我不知道一个应用程序可以分配超过2GB的内存)有时它会崩溃。内存使用率确实会越来越小,但速度不够快。我的假设(由于没有更好的,欢迎任何其他想法)是ScrollViewer正在缓存图像,即使BitmapImage被另一个替换后也不会释放该缓存

有没有办法告诉ScrollViewer不要缓存图像


此外,我如何检查内存的去向?我使用的是VS2015,所有诊断工具显示的都是使用的总内存。

VisualStudio 2013将允许您使用。或者,您可以使用(由Microsoft提供)。两者都将显示哪些对象正在消耗您的内存。我已经成功地使用了这两个选项来确定与您类似的问题的根本原因。还有一些第三方工具可以做同样的事情

也许对你的回答是有帮助的。似乎您需要先冻结
位图图像
,然后再将其用作
图像
滚动查看器
的源


我会将此作为评论发布,因为我实际上没有解决方案,但我没有足够的代表性。

从scrollviewer中删除位图时,您是否会处理它?@GianPaolo a)这是一组总计100MB的位图静态组。b) 我到底应该如何处置BitmapImage(在回答此问题之前-请参阅)。如何直接在XAML中将图像添加到ScrollViewer?从URI创建的BitmapImage由运行时缓存。尝试通过SetSourceAsync方法从流中加载它们。@Dani只有一个图像(通过编程方式添加)。这是源代码更改。它始终是全部位于内存中的位图图像的特定集合之一。谢谢。冻结在UWP中不可用。至于其他人,谢谢。它们至少是部分答案+1.