javaxmldecode与弱引用

javaxmldecode与弱引用,java,xml-serialization,Java,Xml Serialization,我的问题是关于Java中弱引用的使用以及XMLDecode如何处理这个问题。假设我有两个对象,A和B。B包含对A的弱引用。我使用XMLEncode将它们写入磁盘,稍后我使用XMLDecode将它们读回 据我所知,垃圾收集器运行时没有设置约定,因此,如果XMLDecode在A之前初始化B,则在初始化A之前会有一个简短的窗口,当弱引用可能被无意中破坏时。这是正确的吗 此外,如果XMLDecode碰巧在B中的弱引用中初始化A,然后在尝试从XMLDecode.readObject()显式加载A时尝试使用

我的问题是关于Java中弱引用的使用以及XMLDecode如何处理这个问题。假设我有两个对象,A和B。B包含对A的弱引用。我使用XMLEncode将它们写入磁盘,稍后我使用XMLDecode将它们读回

据我所知,垃圾收集器运行时没有设置约定,因此,如果XMLDecode在A之前初始化B,则在初始化A之前会有一个简短的窗口,当弱引用可能被无意中破坏时。这是正确的吗


此外,如果XMLDecode碰巧在B中的弱引用中初始化A,然后在尝试从XMLDecode.readObject()显式加载A时尝试使用A的此实例,那么如果垃圾收集器在初始化和分配之间运行,这肯定会导致空指针异常?必须有适当的措施来避免这种情况,或者我误解了垃圾收集过程。

如果
A
是一个对象,在
B
的实例中存在一个弱引用,该对象被弱引用,当您序列化然后反序列化该结构时,初始化的顺序将是:

  • 创建
    B的实例

  • 创建
    B

  • 创建
    A的对象
  • 将步骤2中的弱引用设置为步骤3中初始化的对象

  • 在这些步骤中,GC在哪里可以收集
    A

    的实例?这是因为XMLDecode实例也在内部引用A吗?或者这是一个时间问题,在这种情况下,您可以提供推理的参考。感谢您回顾过去,您无法从一开始序列化WeakReference,因此这完全不是问题。