2012-06-07 3 views
4

바이너리 직렬화에 protobuf-net을 사용하고 있습니다. 내가 직렬화하는 동안 OutOfMemory gettig 클래스 A. 동일한 객체는 BinaryFormatter로 잘 직렬화됩니다.protobuf로 큰 중첩 배열을 직렬화하는 방법은 무엇입니까?

[ProtoContract] 
class A: 
    [ProtoMember(1, DataFormat = DataFormat.Group)] 
    B[] Array1 {get; set;} 
    .... 

class B: 
    [ProtoMember(1)] 
    string Field1 {get; set;} 

    [ProtoMember(2)] 
    string Field1 {get; set;} 

    [ProtoMember(3, DataFormat = DataFormat.Group)] 
    C[] Array2 {get; set;} // 20000 elements 
    .... 

class C: 
    [ProtoMember(1)] 
    string Field1 {get; set;} 

    [ProtoMember(2)] 
    string Field1 {get; set;} 
+0

재현 조사 중이며 –

답변

4

와우 :

다음은 클래스 예입니다. 단순히 와우. 이 질문에 감사드립니다. 몇 가지 시나리오에서 그룹 인코딩을 잘못 적용하지 않아서 사용자가 포함시킨 결함이있었습니다. protobuf-net의 경우, 그룹과 문자열은 서로 바뀌어 처리되기 때문에 큰 문제는 아니지만 "그룹"은 (올바르게 사용했듯이) 앞으로의 작업을 진행할 때 중요한 요소이기 때문에 이것은 당황스러운 결함입니다. 대형 그래프를 직렬화하기 위해서만 사용됩니다.

이 문제는 로컬 및 소스에서 해결되었지만 공식 릴리스를하기 전에 안정성 테스트를 조금 더하고 싶습니다. 소스에서 빌드하는 것이 행복하다면, 이제는 정상적으로 작동해야합니다. 원할 경우 dll을 전자 메일로 보낼 수 있습니다.

+0

감사합니다. 나에게 dll을 이메일로 보내는 것이 좋을 것이다. – shtriha

+0

@shtriha ok. 나는 앞으로 몇 시간 동안 PC에서 떨어져 있지만 나중에 할 것입니다. –

관련 문제