class A{
A aob;
public static void main(String args[]){
A a=new A();
A b=new A();
A c=new A();
a.aob=b;
b.aob=a;
c.aob=a.aob;
A d=new A().aob=new A(); //tricky assignement
c=b; //one object eligible GC
c.aob=null;
System.gc();
}
}
ガベージコレクションの対象となるオブジェクトは2つありますが、1つは理解しづらいものです。ガベージコレクタの対象オブジェクトの数
A d=new A().aob=new A();
1)それがこの
A d = new A().aob = new A();
^ ^
O1 O2
O1 --> O2 --> null
^
|
d ----|
2になるだろうというこのラインIの事)しかし、何が本当にやっていることはとても1つの適格なオブジェクト(この場合)は、なぜこのようなものですか?
A d = new A().aob = new A();
^ ^
O1 O2
O1 --> O2 --> null
^
|
d -----------|
アサインメントは右から左に連想するためです。
A d = (new A().aob = new A());
他に誰かがそれを説明できますか? ありがとう
2点:まず、2番目の図には「O2 - > O1-> null」が必要です。第2に、gcに適格な他のオブジェクトは、「A c = new A();」の中の「c」に割り当てられた「A」の元のインスタンスである。おそらくあなたはこれを知っていたが、言及されていないので、私はそれを言及すると思った。 :) –