Ich möchte ein von mir erstelltes Objekt löschen (ein Oval, das Ihnen folgt), aber wie würde ich das tun?
delete follower1;
hat nicht funktioniert.
BEARBEITEN:
Okay, ich werde etwas mehr Kontext geben. Ich mache ein kleines Spiel mit einem Oval, das du kontrollieren kannst, und einem Oval, das dir folgt. Jetzt habe ich Dateien mit dem Namen: DrawPanel.class, diese Klasse zeichnet alles auf dem Bildschirm und behandelt Kollisionen, Geräusche usw. Ich habe eine feindliche Klasse, die das Oval ist, das dem Spieler folgt. Ich habe eine entity.class, die der Spieler ist, den du steuern kannst. Und wenn sich der Player mit dem Follower überschneidet, soll mein Player-Objekt gelöscht werden. So wie ich es mache:
public void checkCollisions(){
if(player.getBounds().intersects(follower1.getBounds())){
Follower1Alive = false;
player.health = player.health - 10;
}
}
Antworten:
Sie sollten die Verweise darauf entfernen, indem Sie null zuweisen oder den Block belassen, in dem er deklariert wurde. Danach wird es vom Garbage Collector automatisch gelöscht (nicht sofort, sondern eventuell).
Beispiel 1:
Beispiel 2:
Nicht etwas, nach dem Sie gerade suchen, aber zu Ihrer Information : Sie können den Garbage Collector mit dem Aufruf System.gc () aufrufen.
quelle
System.gc()
ist im Allgemeinen keine gute Idee , da es von der JVM möglicherweise ignoriert wird.null
Zuweisung ein eindeutiges Zeichen für den GC, dass dieses Objekt beim nächsten GC-Aufruf bereinigt werden soll? * Durch das Zuweisennull
zu Sammlungsobjekten (Listen, Arrays) werden diese zur Reinigung markiert? stackoverflow.com/questions/449409/…onPause
? Null machen .Ihr C ++ wird angezeigt.
delete
In Java gibt es kein und alle Objekte werden auf dem Heap erstellt. Die JVM verfügt über einen Garbage Collector, der sich auf Referenzzählungen stützt.Sobald keine Verweise mehr auf ein Objekt vorhanden sind, kann es vom Garbage Collector gesammelt werden.
myObject = null
darf es nicht tun; beispielsweise:Alles, was dies tut, ist, die Referenz
myObject
auf Null zu setzen. Es wirkt sich nicht auf das Objekt aus, auf dasmyObject
einmal verwiesen wird, außer um einfach die Referenzanzahl um 1 zu verringern. Da es sichmyOtherObject
immer noch auf dieses Objekt bezieht, ist es noch nicht zum Sammeln verfügbar.quelle
onPause
? Null machen .Wenn Sie möchten, dass ein Objekt entfernt wird, setzen Sie seinen Verweis auf null.
Wenn Sie den Verweis auf null setzen, ist es wahrscheinlicher, dass das Objekt durch Müll gesammelt wird, solange keine anderen Verweise auf das Objekt vorhanden sind.
quelle
onPause
? Null machen .Sie müssen keine Objekte in Java löschen. Wenn kein Verweis auf ein Objekt vorhanden ist, wird es vom Garbage Collector automatisch erfasst.
quelle
onPause
? Null machen .Sie können die Referenz mit entfernen
null
.Angenommen, Sie haben Klasse
A
:Die letzte Anweisung entfernt die Referenz des Objekts
a
und dieses Objekt wird von JVM "Müll gesammelt". Dies ist eine der einfachsten Möglichkeiten, dies zu tun.quelle
onPause
? Null machen .Ja, Java ist Müll gesammelt, es wird den Speicher für Sie löschen.
quelle
quelle