【问题标题】:Implementation of Stream that wraps another stream包装另一个流的 Stream 的实现
【发布时间】:2011-01-31 20:41:39
【问题描述】:

好吧,我想我得制作一个与我在Out of memory exception while loading images找到的问题相关的三部曲

所以第二部分来了。

根据上面提到的帖子找到的答案 - cmets,迟早任何计算机都会在执行我的代码时耗尽内存。 :(

但是感谢Google,我找到了一种在作者所说的地方应用WrappingStream Implementation.的方法

BitmapImage 保留对 源流(大概是这样 您可以阅读 StreamSource 属性 在任何时候),所以它保持 MemoryStream 对象活着。 不幸的是,即使 MemoryStream.Dispose 已被调用, 它不会释放字节数组 内存流换行。所以,在这个 情况下,位图引用流, 这是引用缓冲区,可能 占用大量空间 大对象堆。请注意,那里 不是真正的内存泄漏;当有 不再引用位图,所有 这些对象将(最终)是 垃圾收集。但是由于位图 已经制作了自己的私人副本 图像的(用于渲染),似乎 相当浪费 现在不必要的原始副本 位图仍在内存中。

所以这里有几个问题。 (在开始投票之前,请记住我是新手!)

我可以使用 WrappingStream 类来避免内存不足错误吗? 如果第一个是真的,我该如何采用它并使它与我的example? 一起使用

谢谢

【问题讨论】:

    标签: c# .net vb.net filestream out-of-memory


    【解决方案1】:

    我可以使用 WrappingStream 类来避免内存不足错误吗?

    不,它针对的是不同的问题。

    【讨论】:

    • 我将发布对原始问题的更有用的答案。
    【解决方案2】:

    System.Net.Http.Formatting.Internal.DelegatingStream 应该符合要求。可惜微软没有在框架中公开这个类。

    https://github.com/ASP-NET-MVC/aspnetwebstack/blob/4e40cdef9c8a8226685f95ef03b746bc8322aa92/src/System.Net.Http.Formatting/Internal/DelegatingStream.cs

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-24
      • 1970-01-01
      • 1970-01-01
      • 2013-05-23
      • 1970-01-01
      相关资源
      最近更新 更多