2012-10-31 32 views
2

例如,我有:.net中的二進制序列化/反序列化對象圖大小是否有任何限制?

struct SomeStruct 
{ 
    //some fields 
    //each instance will store info read from file, maybe be 3kb, maybe more. 
} 

List<SomeStruct> lst = new List<SomeStruct>(); 

我將添加到該對象列表瘋狂的量,所以它最終會以10Gbs以上的規模。 我可以序列化lst沒有任何錯誤,如內存不足等等?我以後可以反序列化它嗎?

回答

1

如果你一次可以在內存中保存項目列表,你應該有序列化/反序列化它們的好機會。您可能希望單獨處理它們,而不是一次對所有列表進行序列化/反序列化。這可以處理你可能遇到的任何邊緣情況。

僞代碼:

private void SerializeObjects(List<foo> foos, Stream stream) 
{ 
    foreach (var f in foos) 
    { 
     stream.Write(f); 
    } 
} 

private void DeserializeObjects(List<foo> foos, Stream stream) 
{ 
    foo f = stream.ReadFoo(); 
    while (f != null) 
    { 
     foos.Add(f); 
     f = stream.ReadFoo(); 
    } 
} 
相關問題