Мне был задан вопрос о сборе мусора в одном интервью.Java: сбор мусора
Ниже приведен фрагмент кода.
List<String> a=new ArrayList<String>();
a.add("one");
a.add("two");
a.add("three");
a.add("four");
HashSet<String> h=new HashSet<String>();
h.add("four");
h.add("five");
h.add("six");
h.addAll(a);
a=null;
Вопрос: сколько объектов имеют право для сбора мусора>
Пожалуйста, объясните.
ИМО единственный правильный ответ: * невозможно сказать *. :-) Мы не знаем, сколько объектов создается внутри 'String',' HashSet' и 'ArrayList'. – NPE
Еще одна причина, по которой невозможно сказать, заключается в том, что ничего не говорится о точном времени, когда вопрос должен быть оценен. Сразу после последнего назначения или когда метод закончен? –
@NPE На самом деле, мы делаем, по крайней мере, с openjdk. Единственным видимым для пользователя объектом GC является объект ArrayList, который [назначен один] (http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/8-b132/java/ util/ArrayList.java # ArrayList.0DEFAULT_CAPACITY) 'Object [10]'. Так что ответ два. – maaartinus