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

コンストラクターに参照の保持などの副作用がない場合は、Trueです。

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 に答える