嗯,我想我必须制作一个与Out of memory exception while loading images
中发现的问题有关的三部曲。所以这是第二部分。
根据答案 - 发现上述帖子的评论,迟早任何计算机在执行我的代码时都会耗尽内存。 :(
但是感谢Google我根据作者找到了一种应用WrappingStream Implementation.的方法
BitmapImage保留对引用的引用 源流(大概是这样的 您可以阅读StreamSource属性 在任何时候),所以它保持 MemoryStream对象是活着的。 不幸的是,尽管如此 已调用MemoryStream.Dispose, 它不会释放那个字节数组 内存流包装。所以,在这 case,bitmap是引用流, 这是引用缓冲区,可能 占用了很多空间 大对象堆。请注意那里 不是真正的内存泄漏;当有 所有都不再是对位图的引用 这些对象将(最终)成为 垃圾收集。但是因为位图 已经制作了自己的私人副本 看来,图像(用于渲染) 相当浪费 现在不必要的原始副本 位图仍在内存中。
所以这里有几个问题。 (在开始投票之前,请记住我是新手!)
我可以使用WrappingStream类来避免内存不足错误吗? 如果第一个是真的,我如何采用它并使其与我的example?
一起使用谢谢
答案 0 :(得分:1)
我可以使用WrappingStream类来避免内存不足错误吗?
不,它针对的是另一个问题。
答案 1 :(得分:1)
System.Net.Http.Formatting.Internal.DelegatingStream应符合条款。太糟糕了,微软还没有在框架中公开这个类。