我在一次采访中被问到垃圾收集问题。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 2014-09-30 06:23:32
另一个不可能说明的原因是,没有人明确说明要评估问题的确切时间。最后一次分配后,或方法结束后? – 2014-09-30 06:32:34
@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 2014-09-30 06:32:37