Protobuf.net: OutOfMemoryException

Я получаю исключение System.OutOfMemoryException при вызове Serializer.Deserialize для FileStream. Это происходит только для одного конкретного файла, а не для любых других файлов. Есть идеи, почему это будет? Все файлы имеют одинаковые размеры, и все они содержат одинаковые данные, сериализованные одним и тем же способом.

Код (извините за код VB - это был не мой выбор)

Dim loadObj As Object = Nothing Using tempStream As FileStream = File.OpenRead(dataFilename) loadObj = Serializer.Deserialize(Of MeterReadingsByMeterId)(tempStream) 'fails on 724 every time If Not loadObj.GetType() Is GetType(MeterReadingsByMeterId) Then loadObj = Nothing End If End Using

Трассировки стека:

Exception of type 'System.OutOfMemoryException' was thrown. at System.Collections.Generic.Dictionary`2.Resize() at System.Collections.Generic.Dictionary`2.Insert(TKey key, TValue value, Boolean add) at System.Collections.Generic.Dictionary`2.System.Collections.Generic.ICollection<System.Collections.Generic.KeyValuePair<TKey,TValue>>.Add(KeyValuePair`2 keyValuePair) at proto_6(Object , ProtoReader ) at ProtoBuf.Serializers.CompiledSerializer.ProtoBuf.Serializers.IProtoSerializer.Read(Object value, ProtoReader source) at ProtoBuf.Meta.RuntimeTypeModel.Deserialize(Int32 key, Object value, ProtoReader source) at ProtoBuf.ProtoReader.ReadTypedObject(Object value, Int32 key, ProtoReader reader, Type type) at ProtoBuf.ProtoReader.ReadObject(Object value, Int32 key, ProtoReader reader) at proto_4(Object , ProtoReader ) at ProtoBuf.Serializers.CompiledSerializer.ProtoBuf.Serializers.IProtoSerializer.Read(Object value, ProtoReader source) at ProtoBuf.Meta.RuntimeTypeModel.Deserialize(Int32 key, Object value, ProtoReader source) at ProtoBuf.ProtoReader.ReadTypedObject(Object value, Int32 key, ProtoReader reader, Type type) at ProtoBuf.ProtoReader.ReadObject(Object value, Int32 key, ProtoReader reader) at proto_2(Object , ProtoReader ) at ProtoBuf.Serializers.CompiledSerializer.ProtoBuf.Serializers.IProtoSerializer.Read(Object value, ProtoReader source) at ProtoBuf.Meta.RuntimeTypeModel.Deserialize(Int32 key, Object value, ProtoReader source) at ProtoBuf.Meta.TypeModel.DeserializeCore(ProtoReader reader, Type type, Object value, Boolean noAutoCreate) at ProtoBuf.Meta.TypeModel.Deserialize(Stream source, Object value, Type type, SerializationContext context) at ProtoBuf.Serializer.Deserialize[T](Stream source)

0 ответов

Другие вопросы по тегам