在我的 Java 书中有一个练习要求您:“分配 10000 个 Rational 对象而不将它们保存在变量中,以免它们变成垃圾。”
下面是分配对象而不将它们分配给变量的正确方法吗?
for (int i = 0; i < 10000; i++) {
new Rational();
}
谢谢
在我的 Java 书中有一个练习要求您:“分配 10000 个 Rational 对象而不将它们保存在变量中,以免它们变成垃圾。”
下面是分配对象而不将它们分配给变量的正确方法吗?
for (int i = 0; i < 10000; i++) {
new Rational();
}
谢谢
没错,每个Rational
都是在没有引用的情况下实例化的,因此随后在某个时候被垃圾收集。Java 没有强制垃圾收集的方法,但您可以调用Runtime.gc()
来请求垃圾收集。
没错,只要构造函数没有保留引用等副作用。
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
}