Сейчас изучаю книгу "Кэти Сьерра и Берт Бейтс - Изучаем Java"
мне не совсем понятно как это работает?
цитата:
" Ваша цель — делать объекты недоступными (пригодными для сборщика мусора) после работы с ними.
Если вы удерживаете объекты, то сборщик мусора не сможет ничем помочь, а ваша программа рискует погибнуть мучительной смертью, израсходовав всю память." стр.290. (в самом низу перед картинкой)
Благодарю.
Андрей Андреев
22 уровень
Объясните пожалуйста кто может на примере?
Решен
Комментарии (5)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Ksenia VolkovaJava Developer в DXCMaster
23 декабря 2019, 12:39решение
Пока в твоей программе существует ссылка на какой-то объект - например, есть переменная, которая ссылается на этот объект, или объект является частью другого используемого объекта (элементом списка, к примеру) - garbage collector его не выкинет.
Если таких ссылок нет - объект может быть уничтожен.
Например, на котиках:
+4
Андрей Андреев
23 декабря 2019, 12:54
Я благодарю.
Но мне по прежнему не понятно, что такое "...делать объекты недоступными..."
и что значит, "...удерживаете объекты..." ???
Про то что объект существует, пока на него кто-то или что-то ссылается, понятно полностью и более чем. ))))
Благодарю.
0
YuriyExpert
23 декабря 2019, 13:05
В Java работа с памятью напрямую невозможна, ее очисткой занимается сборщик мусора, управлять работой которого Вы тоже явно не можете. Переменные ссылочных типов сами по себе занимают совсем немного места в памяти по сравнению с объектами на которые ведут ссылки. Чтобы "намекнуть" сборщику мусора на то, что объект более не нужен и его данные можно удалить, надо присвоить ссылках на этот объект null. Кстати, ссылки на объекты тоже бывают разные, об этом будет несколько лекций немного позже, в блоке Java Collections.
+2
Ksenia VolkovaJava Developer в DXCMaster
23 декабря 2019, 13:13
"Удерживать" объект - хранить на него ссылку.
"Делать недоступным" - избавляться от ссылки.
Если у тебя нет ссылки на объект, ты уже ничего не можешь с ним делать, он для тебя (для твоей программы) недоступен. Он еще может какое-то время храниться в памяти, но ты до него добраться уже не можешь.
Зато это делает его доступным для сборщика мусора.
+2
Андрей Андреев
23 декабря 2019, 13:26
Благодарю!
Теперь врубился!
0