Описание тега phantom-reference

Фантомная ссылка относится к ссылочному типу объектов в java. Это самый слабый из справочных типов. Если объект завершен, но его память еще не восстановлена, выполняется фантомная ссылка. Альтернатива устаревшей финализации с помощью метода finalize()
1 ответ

Почему мои объекты не умирают?

Я пытаюсь реализовать механизм, который удаляет кэшированные файлы, когда объекты, которые их содержат, умирают, и решил использовать PhantomReferences, чтобы получить уведомление о сборке мусора объекта. Проблема в том, что я продолжаю испытывать с…
05 авг '13 в 19:02
1 ответ

Какова связь между PhantomReference и ReferenceQueue?

У меня есть небольшая путаница по поводу PhantomReference в Java. Когда я просматривал онлайн-статьи, большинство из них упоминало, что объект PhantomReference вернет значение null после создания, даже если мы вызовем get() для ссылки, а также упомя…
08 окт '14 в 15:37
1 ответ

Удалить нативный узел с общим классом PhantomReference

Как говорит Ханс Бём в лекции Google I/O '17 " Как управлять собственной памятью C++ в Android ", я предлагаю использовать PhantomReference класс для обеспечения правильного удаления собственных пиров. В связанном видео в 18 минут 57 секунд он показ…
1 ответ

Java PhantomReference против finalize()

Я читал эту статью о PhantomReference https://www.baeldung.com/java-phantom-reference и упрощенном примере кода, найденном там: public static void main(String[] args) throws InterruptedException { ReferenceQueue<Object> referenceQueue = new Re…
1 ответ

Когда использовать фантомные ссылки в Java?

Возможный дубликат: Вы когда-нибудь использовали ссылку Phantom в каком-либо проекте? Я читал о различных типах ссылок. Я понимаю, как работают сильные, мягкие и слабые ссылки. Но когда я читал о фантомных ссылках, я не мог их понять. Возможно, пото…
22 мар '12 в 16:44
1 ответ

PhantomReference с нулевой очередью

Java позволяет писать: new PhantomReference(new Object(), null) В этом случае new Object() будет собираться? Как я понимаю, фантомная ссылка является альтернативой finalize() использование метода. И после появления ссылки в очереди, мне нужно сделат…
4 ответа

Указатели на функции-члены и фантомные классы

Я возился с указателями на функции-члены по отношению к предыдущему вопросу. В приведенном ниже коде я вызываю методы для класса (B), которые изменяют переменную (число) в нем, но я никогда не создаю экземпляр этого класса. Почему это работает? #inc…
1 ответ

Использование различных ссылочных типов в Java

Недавно я поигрался с мягкими, слабыми и фантомными ссылочными типами в Java, и мне было интересно, есть ли какие-то способы их использования, с которыми я не сталкивался. Я использовал их в прошлом для разных вещей, и они всегда подпадали под катег…
1 ответ

Пример использования PhantomReference

Насколько я знаю, ссылки попадают в QueueReference когда объект, на который указывает ссылка, удаляется. Вот пример, где я собирался продемонстрировать это, но это не работает. Код внутри if никогда не был казнен. Что это значит. Я использовал это н…
10 дек '15 в 15:34
2 ответа

Буду ли я избегать использования Reflection во время финализации с PantomReferences?

Допустим, я создал класс MyClass, который реализует Closable. Так что в методе close() я собираюсь освободить несколько очень важных ресурсов. Ну, так как это очень важные источники, я создал какую-то сеть безопасности (как рекомендуется в Effective…
5 ответов

Когда использовать слабые и фантомные ссылки в Java

Я читаю много статей, но не понимаю - где мне на практике использовать слабые и фантомные ссылки? Мягкие ссылки - это хороший выбор для кеша, как я понимаю. Но слабый и призрачный, я не знаю, когда использовать. Пожалуйста, приведите примеры реальны…
2 ответа

Смешивание разных типов ссылок в одной коллекции

SoftReference, WeakReference, PhantomReference может быть использован для настройки процесса сбора мусора. Все они расширяются Reference<T> поэтому их можно смешивать в одной коллекции. Жесткие ссылки (наиболее распространенные) не распростран…
2 ответа

Почему призрачная ссылка не ставится в очередь?

Я опираюсь на фантомную ссылку, и я запутался, как эта фантомная ссылка ставится в очередь, когда референт собирает мусор. Вот мой код Object s = new Object(); ReferenceQueue<Object> queue = new ReferenceQueue<Object>(); PhantomReference…
23 фев '18 в 09:33
6 ответов

Java: разница между сильной / мягкой / слабой / фантомной ссылкой

Я читал эту статью на эту тему, но я не совсем понимаю. Пожалуйста, дайте мне несколько советов вместе с примерами при описании концепций.
1 ответ

Важность фантомной ссылки в Java

Я хотел понять заявление ниже, выделенное жирным шрифтом. Что это значит? ( Ссылка) Объект, который переопределяет finalize() Теперь необходимо определить, что это мусор, по крайней мере, в двух отдельных циклах сбора мусора, чтобы его можно было со…
12 июл '15 в 20:05
6 ответов

Призрачные объекты

Призрачные ссылки служат для посмертных операций. В спецификации Java говорится, что объект, на который ссылаются фантомы, не будет освобожден до тех пор, пока сама ссылка на фантом не будет очищена. Мой вопрос: какой цели служит эта функция (объект…
17 сен '08 в 07:06
4 ответа

Понимание справочных классов Java: SoftReference, WeakReference и PhantomReference

Может кто-нибудь объяснить разницу между тремя ссылочными классами (или опубликовать ссылку на хорошее объяснение)? SoftReference > WeakReference > PhantomReference, но когда я буду использовать каждый? Почему есть WeakHashMap но нет SoftHashMap или…
4 ответа

$n = 2; 10-$n = 87

Ну это то, что я делаю: $total = (array_sum($odds))+$evens; $total = str_split($total); echo 'total[1]: '.$total[1].'<br />'; echo '10-$total[1]: ' . (10-($total[1])); и вывод: total[1]: 2 10-$total[1]: 87 я думаю, что это рассматривается как …
14 июл '10 в 08:56
4 ответа

Есть ли способ переработать сложный объект Java, как только GC решил, что он недоступен

В C++ я использую объекты с подсчетом ссылок для реализации "автоматической" рециркуляции пула объектов SmartPointer<ObjType> object = pool.getObject(); // hold reference // ... do stuff with object over time. object = nullptr; // that is when…
2 ответа

Когда PhantomReference/SoftReference/WeakReference ставится в очередь, как вы узнаете, на что он ссылается?

Я не использовал PhantomReferences. Кажется, очень мало хороших примеров реального использования. Когда фантом появляется в вашей очереди, как вы узнаете, какой это был объект? Метод get() кажется бесполезным. Согласно JavaDoc, Поскольку референт фа…