4

我在 .Net 3.5 框架中看到 BinaryFormatter 类的内存泄漏问题。我正在使用以下方法来反序列化一个对象。传递给此方法的字节数组大小为 156MB。但是,我调用这个方法后有 2.6GB 的跳跃。

我在 MSDN 上找到了这篇文章,讨论了这个内存泄漏问题。http://blogs.msdn.com/b/psirr/archive/2009/11/13/interesting-memory-leak-in-net-3-5-binary-deserialization.aspx

有谁知道这个问题是否有解决方案?.Net 4.0 解决了吗?

    public static Message DeserializeContent(byte[] content)
    {
        var formatter = new BinaryFormatter();
        Message message;

        using (var stream = new MemoryStream(content))
        {
            message = (Message) formatter.Deserialize(stream);
            stream.Close();
        }
        return message;
    }
4

1 回答 1

-1

那很有意思。没有管理内存,即使在泄漏的情况下,也不应该收集它吗?即使您处理二进制格式化程序或强制垃圾收集器运行,也会发生这种情况吗?但是,即使它确实收集了泄漏的内存,请记住这不是一个绝对的解决方案,因为在释放内存之前可能没有足够的内存来反序列化......

希望它会得到修复。

于 2010-12-09T01:43:47.783 回答