java - 当序列化一个对象集合时,每个对象都包含对集合中另一个对象的引用,它会做什么?

标签 java serialization collections reference

因此,所有对象都被序列化,但每个对象都包含对集合中另一个对象(相同类型)的引用。我认为我应该将其命名为 transient ,存储一个可用于在反序列化时再次获取对象的字符串,然后在此时恢复它。但在这种情况下,我会在覆盖的 readObject 方法中执行此操作吗?如果这个解释有道理,有人可以帮忙吗?谢谢。

最佳答案

没有必要这样做。 Java的序列化可以处理循环引用。 ObjectInputStream 和 ObjectObjectStream 都会跟踪它们已经处理过的对象,以防止无限序列化循环。如果您长时间保留流,这可能会导致内存泄漏。

关于java - 当序列化一个对象集合时,每个对象都包含对集合中另一个对象的引用,它会做什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6903353/

相关文章:

java - 集合迭代时移除元素

java - 从java 8流中获取N(3)个列表(基于ENUM性别(男,女,其他))并基于ENUM过滤条件

java - 使用 TypeReference 的具有泛型类型的 JSON 反序列化器

c# - 如何在没有类对象的情况下使用 json 序列化 int 值?

arrays - Swift 字典查找导致编译时错误

java - Oc4j:从同一 EAR 中的 Web 应用程序调用本地 EJB

java - 本地开发服务器上的谷歌云存储 : Invalid Filename

java - hibernate :未设置方言。设置属性 hibernate.dialect

java.lang.ClassNotFoundException : javax. servlet.jsp.SkipPageException 异常

c++ - 序列化 : CArchive a CImage