我在.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;
}
答案 0 :(得分:-1)
这很有趣。是不是内存管理,即使在泄漏的情况下,不应该收集? 即使您处置二进制格式化程序或强制垃圾收集器运行,是否会发生? 但是,即使它确实收集了泄漏的内存,请记住这不是一个绝对的解决方案,因为在内存处理之前可能没有足够的内存来反序列化...
希望它能得到修复。