从MemoryStream反序列化会在C#中抛出OutOfMemory异常

时间:2009-07-16 07:54:28

标签: c# winforms serialization c#-3.0

这是一个C#3.0 Winform问题。

我想克隆一个大的(实际上不是很大)复杂的对象。为了懒惰,我将它seralize到MemoryStream并使用BinaryFormatter.UnsafeDeserialize(MemoryStream,null)方法来获取克隆对象。在UnsafeDeserialize()方法内部,始终会抛出OutOfMemory异常。记忆力应该足够了。

我读了一下这个.net错误,但不确定是否是这种情况。

任何人都知道为什么会这样吗?任何工作?感谢。

4 个答案:

答案 0 :(得分:2)

也许是一个愚蠢的问题但是你还记得在反序列化之前将MemoryStream倒回到流的开头吗?

也可能有助于分享您的部分代码。

答案 1 :(得分:1)

为什么使用UnsafeDeserialize代替Deserialize

答案 2 :(得分:1)

对象是什么,有多大?

我见过其他有类似问题的人,在某些情况下切换到不同的序列化程序修复它。根据情景,我可以建议几个可能很合适的东西;特别是 - 数据是还是? (即儿童对象是指兄弟姐妹或他们的父母?还是仅仅是他们自己的孩子)。

答案 3 :(得分:0)

我建议您尝试使用FileStream,并查看文件的大小。