.Net 3.5中BinaryFormatter类的内存泄漏问题

时间:2010-12-09 00:30:29

标签: .net-3.5 memory-leaks binaryformatter

我在.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;
    }

1 个答案:

答案 0 :(得分:-1)

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

希望它能得到修复。