ScrollViewer 中的图像导致内存泄漏

Memory leak by an Image in a ScrollViewer

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

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

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

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

也许对 this other question 的回复有帮助。看来您需要先冻结 BitmapImages,然后再将它们用作 ImageScrollViewer.

的来源

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