有多少个对象可以进行垃圾回收?

Mar*_*ics 0 java garbage-collection

所以我最近去过面试,并被问到以下问题.(实际上这只是一个测试写作,所以我不能问任何问题)

在main方法的最后,有多少对象可以进行垃圾回收?

public class Main {
    public static void main(String[] args) {
        Object obj;
        for (int i = 0; i < 5; i++) {
            obj = new Object();
        }
        obj = null;
    }
}
Run Code Online (Sandbox Code Playgroud)

(A)0

(B)1

(C)5

我知道它是0,因为至少有一个object(obj)将被垃圾收集,但我也知道它obj不是真正的对象,它只是对它的引用.所以我的回答是5.

那是对的吗?如果没有,那么为什么呢?

Vim*_*era 6

你的答案5 is correct.

这里通过for循环创建了总共5个对象,并且所有这些对象都有资格在方法结束时进行垃圾回收.