2016-06-30 14 views
2

Ich bin ein Array durchlaufen und basierend auf den Werten ein anderes Objekt erstellen. und ich möchte wissen, wie Sie ein Objekt ohne Namen löschen oder de-referenzieren würden.Wie kann man ein Objekt in Java ohne Namen zerstören?

Hier ist ein Beispiel dafür, was ich meine

new Test(); // so now how would I delete this instance of test? 
+4

In Java Sammeln genannt, im Gegensatz zu C/C++, die JVM Garbage Collection für Sie übernimmt. Sie müssen 'delete' oder ähnliches nicht aufrufen. –

+2

Sie sollten ein grundlegendes Tutorial über die Funktionsweise von Java lesen. –

Antwort

4
new Test().m1().m2(); 
// here the previous instance may be deleted, there is no reference to `new Test()` 

Es wird von der GC nach gelöscht werden (wir nicht genau wissen, wann es genannt wird) alle Operationen (m1, m2 Methoden in unserem Beispiel) darüber gemacht werden.

Sie könnten anrufen (oder einfach System.gc()), aber es gibt keine Garantie, dass der Garbage Collector kommen wird.

Ich habe versucht zu zeichnen, wie ich es mir vorstellen kann.

enter image description here

+0

aber wie könnte ich es auf Befehl löschen? thx –

+2

Es gibt keine solche Sache in Java. In Java ist die automatische Speicherbereinigung automatisiert und wir haben keine Kontrolle darüber. – praveen

+0

Wir können die JVM nicht auf Garbage Collect (nicht ohne einen massiven Hack) forcieren, aber wir können sie _Cement_ höflich bitten, 'System.gc()' zu verwenden. –

0

Wenn das Objekt eine lokale Variable ist, wird es automatisch Müll gesammelt werden, wenn immer die Garbage Collection stattfindet.

1

Java führt GC selbst aus, es muss nicht manuell durchgeführt werden.

Erwähnte Objekt sollte nicht verwendet werden, um für GC infrage zu kommen. JVM führt mehrere Scans durch und verschiebt diese Objekte von einer Generation zur nächsten, um die Berechtigung von GC zu ermitteln und den Speicher freizugeben, wenn die Objekte nicht erreichbar sind.

1

Java automatisch gelöscht wird, wird Garbage ;-)

Verwandte Themen