Мой вопрос касается использования слабых ссылок в Java и того, как XMLDecode справляется с этим. Скажем, у меня есть два объекта, A и B. B содержит слабую ссылку на A. Я использую XMLEncode, чтобы записать их на диск, и позже я использую XMLDecode, чтобы прочитать их обратно.
Насколько я понимаю, не существует установленного контракта на время запуска сборщика мусора, поэтому, если XMLDecode начинается с инициализации B до A, появляется короткое окно перед инициализацией A, когда слабая ссылка может быть непреднамеренно прервана. Это правильно?
Кроме того, если XMLDecode инициализирует A внутри слабой ссылки в B, а затем пытается использовать этот экземпляр A, когда мы пытаемся явно загрузить A из XMLDecode.readObject (), это, безусловно, может вызвать исключение нулевого указателя, если сборщик мусора работал между инициализацией и назначением? Должно быть что-то, чтобы избежать этого, или что-то, что я неправильно понял в процессе сбора мусора.