2

在我的 Java 书中有一个练习要求您:“分配 10000 个 Rational 对象而不将它们保存在变量中,以免它们变成垃圾。”

下面是分配对象而不将它们分配给变量的正确方法吗?

    for (int i = 0; i < 10000; i++) {
        new Rational();
    }

谢谢

4

2 回答 2

2

没错,每个Rational都是在没有引用的情况下实例化的,因此随后在某个时候被垃圾收集。Java 没有强制垃圾收集的方法,但您可以调用Runtime.gc()来请求垃圾收集。

于 2012-04-28T01:42:42.770 回答
1

没错,只要构造函数没有保留引用等副作用。

class Rational {
    static final List<Rational> IRRATIONAL = new ArrayList<Rational>();

    Rational() {
        IRRATIONAL.add(this);
    }

    static Iterable<Rational> allRationals() {
        return IRRATIONAL;
    }
}


for (int i = 0; i < 10000; i++) {
    new Rational();
}

for(Rational r: Rational.allRationals()) {
    // all still here
}
于 2012-04-28T07:54:13.470 回答