Я пытаюсь понять разницу между разными ссылками, но теория не вызывает никаких идей для меня, чтобы визуализировать то же самое.
Может кто-нибудь объяснить вкратце различные ссылки?
Пример для каждого из них будет лучше.
Я пытаюсь понять разницу между разными ссылками, но теория не вызывает никаких идей для меня, чтобы визуализировать то же самое.
Может кто-нибудь объяснить вкратце различные ссылки?
Пример для каждого из них будет лучше.
Еще одна хорошая статья по теме:
Java Reference Objects или как я научился прекращать волноваться и любить OutOfMemoryError, с хорошими диаграммами

Extract:
Как вы могли догадаться, добавление трех новых необязательных состояний к диаграмме жизненного цикла объекта создает беспорядок.
Хотя документация указывает на логическую прогрессию от достижимой цели с помощью мягких, слабых и phantom, для исправления, фактическая прогрессия зависит от того, какие объекты ссылки создаются вашей программой.
Если вы создаетеWeakReference, но не создаетеSoftReference, тогда объект переходит непосредственно от сильно доступного до слабо доступного до финализированного для сбора. жизненный цикл объекта, с объектами справки
Также важно помнить, что не все объекты привязаны к ссылочным объектам - на самом деле, очень немногие из них должны быть.
Объектом ссылки является слой косвенности: вы проходите через ссылочный объект для доступа к указанному объекту и, очевидно, вам не нужен этот слой косвенности во всем коде.
На самом деле большинство программ будут использовать ссылочные объекты для доступа к относительно небольшому числу объектов, создаваемых программой.
Ссылки и ссылки
Объект ссылки обеспечивает слой косвенности между вашим программным кодом и другим объектом, называемым референтом.
Каждый ссылочный объект строится вокруг своего референта и предоставляет метод get() для доступа к референту. Когда вы создадите ссылку, вы не сможете изменить ее референт. После того как референт был собран, метод get() возвращает значение null. отношения между кодом приложения, soft/weak reference и referent

Еще больше примеров: Java-программирование: Пакет ссылок
alt text http://www.pabrantes.net/blog/space/start/2007-09-16/1/referenceTypes.png
Случай 1: Это регулярный случай, когда объект называется достижимым.
Случай 2: Есть два пути к объекту, поэтому выбирается самый сильный из них, который имеет сильную ссылку, поэтому объект может достигать цели.
Случай 3: Еще раз есть два пути к объекту, самым сильным является "Слабая ссылка" (так как другая является ссылкой Phantom), поэтому объект считается слабо доступным.
Случай 4: существует только один путь, а самое слабое звено - слабая ссылка, поэтому объект слабо доступен.
Случай 5: только один путь и самая слабая ссылка - это ссылка Phantom, поэтому объект фантомно доступен.
Случай 6: теперь есть два пути, и самый сильный путь - тот, у которого есть мягкая ссылка, поэтому теперь объект называется мягко доступным.
Статья, объясняющая эти типы ссылок (включая примеры): http://weblogs.java.net/blog/enicholas/archive/2006/05/understanding_w.html
Там действительно простое правило:
Object a = new Object(). Объекты, на которые ссылаются, не являются мусором, если ссылка (a, выше) является "достижимой". Следовательно, все, что не может быть достигнуто, может считаться мусором.Итак, посмотрим на несильные ссылочные типы:
WeakReference очищены). Слабая ссылка на a будет выглядеть как new WeakReference<Object>(a). Слабые ссылки полезны в том случае, если вы хотите использовать кеш, в котором данные нужны только в том случае, если ключи существуют как сильно доступные в другом месте (например, HttpSessions).Я никогда не уверен в phantom те!