Углубляю познания о джаве. Наткнулся на статью о типах ссылок. Понял, что существуют 4 типа ссылок:
Незнаю, правильно ли я понял, поэтому прошу подправить.
1 Тип сильная ссылка (Strong reference)
Object object = new Object();//создал обьект
object = null;//теперь может быть собран сборщиком мусора
2 Тип слабая ссылка (Weak Reference)
// какой-то объект
Object object= new Object ();
// слабая ссылка на него
WeakReference<Object > weakStudent = new WeakReference<Object >(object);
// теперь объект Object может быть собран сборщиком мусора
object= null;
3 Тип мягкая ссылка (Soft Reference)
// какой-то объект
Object object= new Object ();
// слабая ссылка на него
SoftReference<Object > softStudent = new SoftReference<Object >(object)
// теперь объект Student может быть собран сборщиком мусора
// но это случится только в случае сильной необходимости JVM в памяти
object= null;
4 Тип фантомная ссылка (ничего не понял про него)
Более-менее рассказано в документации к пакету java.lang.ref
:
Soft references are for implementing memory-sensitive caches, weak references are for implementing canonicalizing mappings that do not prevent their keys (or values) from being reclaimed, and phantom references are for scheduling post-mortem cleanup actions. Post-mortem cleanup actions can be registered and managed by a Cleaner
.
Подробнее и по-русски, в порядке убывания жёсткости:
OutOfMemoryError
.Map<Ключ, WeakRef<Значение>>
). На возможность зачистки они не влияют вообще никак, слабые ссылки будут очищены при очередном запуске сборщика.Cleaner
и выполнить в это время какие-то собственные действия.Плюс общее правило: политика зачистки для некоего объекта и очистки ссылок на него определяется самыми жёсткими из всех ссылок, что на него указывают.
Глоссарий не вполне очевидных переводов:
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
В моём приложении на андроид я использую несколько звуков с помощью класса soundpool,теперь я хочу реализовать функцию записи звука внутри своего...
Есть класс , который выполняет деление столбиком и результат отображает графически выводом в консольКак протестировать такой метод?