2010-12-09 51 views
2

我在.Net 3.5框架中看到了BinaryFormatter類的內存泄漏問題。 我正在使用下面的方法來反序列化一個對象。傳遞給此方法的字節數組的大小爲156MB。但是,我稱這種方法後有2.6GB的跳躍。.Net 3.5中BinaryFormatter類的內存泄漏問題

我在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

這很有趣。是不是內存管理,甚至在泄漏的情況下,不應該收集? 即使您丟棄二進制格式化程序或強制垃圾收集器運行,它是否會發生? 然而,即使它收集泄漏的內存,記住,這不是一個絕對的解決方案,可能沒有足夠的內存來反序列化的內存可以配置之前...

希望它會得到固定。