4

我需要反序列化 1.5GB 的 txt 文件。我正在使用来自 code.google.com/p/protobuf-net/ 的 protobuf-net

有时它会在不同的地方出现不同的异常(空引用、内存访问冲突)而失败(大约 50% 的情况)。我注意到,如果处理器负载低,那么故障的可能性就会降低。

我应该怎么做才能避免此类失败?

下面是反序列化代码的示例:

public static History LoadFromFile(string path)
    {
        using (var fileStream = File.OpenRead(path))
        {
            var obj = Serializer.Deserialize<History>(fileStream);                
            return obj;
        }
    }

今天我有一个错误代码为 0xc0000005 的 FatalExecutionEngineError,但我无法意识到代码的哪一部分可能不安全。这不是一个持续的错误,我重新启动应用程序后一切正常。

这是带有序列化的文件的示例,我需要对其进行反序列化: https ://docs.google.com/file/d/0B1XaGInC6jg3ZXBZZDA3bHh3bVk/edit

4

1 回答 1

1

谷歌 :

协议缓冲区不是为处理大消息而设计的。作为一般经验法则,如果您要处理的消息均大于 1 兆字节,则可能是时候考虑另一种策略了。也就是说,Protocol Buffers 非常适合处理大型数据集中的单个消息。

来源链接

于 2015-10-14T17:18:32.637 回答