Недавно я искал освобождение памяти, занимаемой объектами Java. Выполняя это, я смутился о том, как объекты копируются (неглубоко/глубоко) на Java и как избежать случайного удаления/уничтожения объектов, пока они все еще используются.
Рассмотрим следующие сценарии:
- передача
ArrayList<Object>
в качестве аргумента метода. - передает
ArrayList<Object>
класс runnable для обработки потоком. - помещает
ArrayList<Object>
вHashMap
.
Теперь в этом случае, если я вызываю list = null;
или list.clear();
, что происходит с объектами? В этом случае объекты теряются, и в каких случаях только ссылка имеет значение null?
Я предполагаю, что это связано с мелким и глубоким копированием объектов, но в каких случаях происходит мелкое копирование и в этом случае происходит глубокая копия в Java?