私はいくつかのJavaガベージコレクションガイドをオンラインで読んだことがありますが、私はまだ不明な点があり、コードにメモリリークがないようにしたいと思っています。インスタンス変数にまだ参照がある場合、Java GCはオブジェクトを破棄しますか?
Java GCは参照を失ったオブジェクトを収集しますが、その変数にはまだ参照がありますか?
それでは、私はSomeObjectのを持っているとしましょう:
public class SomeObject {
public ObjectVar var;
public SomeObject() {
var = new ObjectVar();
}
}
そして、私のコード:
SomeObject obj1 = new SomeObject();
SomeObject obj2 = new SomeObject();
obj2.var = obj1.var;
obj1 = null;
だから、OBJ1のVaRは、参照を持っていませんが、OBJ1は、もはや任意の参照を持っています。では、GCはobj1を破壊しますが、varは生きていますか? (私はそう仮定している;確かにしたい)。ありがとう!
GCの基本ルールは、オブジェクトのGC処理がプログラムに影響する場合、それは起こらないということです。 (GCを気にする特別なツールを使用しているのでなければ、それを使用している場合は分かります) –
["Midlife Crisis"](http://blogs.msdn。 com/b/ricom/archive/2003/12/04/41281.aspx)。 – Mehrdad