У меня небольшая путаница по поводу PhantomReference в java. Когда я просматривал онлайн-статьи, большинство из них упомянули, что объект PhantomReference вернет значение null после создания, даже если мы вызовем get() для ссылки, а также упомянули, что объекты, фантомно доступные, будут вставлены в ReferenceQueue, когда PhantomReference будет удален из память.
Я пробовал следующий пример кода, но у меня есть путаница в результате.
Equipment equipment = new Equipment();
ReferenceQueue queue = new ReferenceQueue();
PhantomReference pr = new PhantomReference(equipment, queue);
System.out.println(pr.get());
System.out.println(queue.poll());
Над двумя операторами выводится null. Если pr.get() возвращает null, означает ли это, что объект, на который ссылается pr, является сборщиком мусора? Если это так, то почему объект до сих пор не добавлен в приоритетную очередь?
Может ли кто-нибудь помочь мне, чтобы прояснить это. Я прошу прощения у вас, если я неправильно понимаю PhantomReference и ReferenceQueue.
Пожалуйста, опишите эти два термина также просто
большое спасибо