2009-07-08 15 views
0
class Stage 
{ 

    Actor act1 = new Actor(); 
    Actor act2 = new Actor(); 
    Actor act3 = new Actor(); 

} 

Stage stg = new Stage(); 

Wie wird Garbage Collection in Java dieses Szenario verhalten?Garbage Collection für innere Objekte

stg = null; 

werden die drei Objekte erstellt act1, act2 und act3 auch Müll gesammelt werden?

Antwort

0

Wenn die Referenzzahl für jedes Objekt 0 ist, werden alle vom GC erfasst.

1

Ja.

Wenn der Garbage Collector ausgeführt wird, werden Verweise auf das alte Objekt nicht mehr angezeigt und bereinigt. Wenn es das nächste Mal läuft, wird es sehen, dass sich jetzt nichts mehr auf die anderen drei Objekte bezieht, und sie auch aufräumen.

Konzeptionell sowieso; Ich bin mir sicher, dass die meisten Müllsammler ein bisschen schlauer als das in der Praxis sind und sie in einem Durchgang bekommen. Der genaue Mechanismus wird variieren.

+0

Also bedeutet das, dass ich die inneren Objekte nicht auf null setzen muss. Sie werden automatisch behandelt. Danke – krisp

+0

Wie C#. Wenn Sie ein Objekt auf null setzen, verlängert sich die Zeit bis zum Löschen. –

0

Sie werden Garbage Collection sein, wenn es keinen Verweis mehr darauf gibt. Vergessen Sie nicht, die angehängte EventListener von außen zu entfernen, da sie auch als Referenz gelten (solange Sie nicht weak-reference verwenden).