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();
}
}
Существует два объекта, подходящих для сбора мусора, но их трудно понять.Сколько объектов, имеющих право на сборщик мусора
A d=new A().aob=new A();
1) Эта линия я вещь, что бы это
A d = new A().aob = new A();
^ ^
O1 O2
O1 --> O2 --> null
^
|
d ----|
2) Но что на самом деле делает это (так один подходящ объект) ПОЧЕМУ ТАК?
A d = new A().aob = new A();
^ ^
O1 O2
O1 --> O2 --> null
^
|
d -----------|
потому что assignements ассоциативно справа налево.
A d = (new A().aob = new A());
Может ли кто-нибудь объяснить это иначе? Thanks
Два момента: во-первых, ваша вторая диаграмма должна иметь «O2 -> O1 -> null». Во-вторых, другим объектом, подходящим для gc, является исходный экземпляр 'A', назначенный' c' в 'A c = new A();'. Предположительно, вы знали это, но он не упоминался, поэтому я подумал, что упомянул об этом. :) –