2011-08-01 1 views
0

개체의 모든 개체가 직렬화되고 있지만 컬렉션의 다른 개체 (동일한 형식)에 대한 참조가 포함되어 있습니다. 나는 그것을 일시적으로 명명하고, deserialization시 객체를 다시 가져 오는 데 사용할 수있는 문자열을 저장 한 다음 그 시점에서 복원해야한다고 생각합니다. 그렇다면 덮어 쓴 readObject 메소드에서 그렇게할까요? 그 설명이 맞는다면 아무도 도와 줄 수 있습니까? 감사.컬렉션에있는 다른 객체에 대한 참조가 각각 들어있는 객체 컬렉션을 직렬화 할 때 어떻게됩니까?

답변

1

이렇게 할 필요가 없습니다. Java의 직렬화는 순환 참조를 처리 할 수 ​​있습니다. ObjectInputStream 및 ObjectObjectStream은 무한 직렬화 루프를 방지하기 위해 이미 처리 한 객체를 추적합니다. 스트림을 오랫동안 유지하면 메모리 누수가 발생할 수 있습니다.

+0

감사합니다. 이중 링크 된 목록을 serialize 할 수 있어야하므로이 작업을 수행 할 수 있는지 궁금합니다. 그러나 오랫동안 그 시내에 머물러 있으면 무슨 뜻입니까? 그냥 파일을 직렬화하는 것은 괜찮습니다. 그렇죠? – Brody

+1

@Brody. 열려있는 연결을 통해 객체를 교환하는 경우 ObjectOutputStream.reset() 또는 ObjectOutputStream..writeUnshared()를 조사해야합니다. – EJP

관련 문제