Hallo
Ich bin grade dabei, fleißig an meinem Spiel zu arbeiten, nun bin ich durch Zufall auf Probleme mit der Freigabe von Objekten gestoßen.
Mein Level besteht aus Tile-Objekten, die eine Referenz auf die Klasse haben, die alle Objekte des eigentlichen Spiels verwaltet.
Dazu gibt es noch andere Objekte, die fast alle Referenzen auf die "Oberklasse" haben.
Wenn ich nun aus einer Datei ein sehr großes Level einlese, fällt das in der Veränderung des Arbeitsspeichers shcon auf, was ich nciht weiter schlimm finde. Wenn ich wieder zurück ins Hauptmenü wechsel, soll die "Spieloberklasse" freigegeben werden, mit dem Level zusammen. Scheinbar wird sie das aber nicht. Wenn ich dann wiederrum in die "Oberklasse" wechseln und ein neues Level lade, steigt der RAM noch weiter. Deshalb dachte ich, dass das vorige Level noch irgendwo weiterexistiert, obwohl ich das beim Verlassen der Oberklasse aus null gesetzt habe.
Wie kann ich das beheben ? Oder ist das normal? Ich verzweifle dabei echt, bei anderen Programmiersprachen gibt es ja den Befehl .free() oder ähnliches, was es ja in Java nicht gibt.
Ich bin grade dabei, fleißig an meinem Spiel zu arbeiten, nun bin ich durch Zufall auf Probleme mit der Freigabe von Objekten gestoßen.
Mein Level besteht aus Tile-Objekten, die eine Referenz auf die Klasse haben, die alle Objekte des eigentlichen Spiels verwaltet.
Dazu gibt es noch andere Objekte, die fast alle Referenzen auf die "Oberklasse" haben.
Wenn ich nun aus einer Datei ein sehr großes Level einlese, fällt das in der Veränderung des Arbeitsspeichers shcon auf, was ich nciht weiter schlimm finde. Wenn ich wieder zurück ins Hauptmenü wechsel, soll die "Spieloberklasse" freigegeben werden, mit dem Level zusammen. Scheinbar wird sie das aber nicht. Wenn ich dann wiederrum in die "Oberklasse" wechseln und ein neues Level lade, steigt der RAM noch weiter. Deshalb dachte ich, dass das vorige Level noch irgendwo weiterexistiert, obwohl ich das beim Verlassen der Oberklasse aus null gesetzt habe.
Wie kann ich das beheben ? Oder ist das normal? Ich verzweifle dabei echt, bei anderen Programmiersprachen gibt es ja den Befehl .free() oder ähnliches, was es ja in Java nicht gibt.