Die finalize Methode wird bei mir erst ab 570000 aufgerufen. Kann mir jemand evtl. erklären woran das liegt?
In der Diskussion
Kommentare (2)
- Beliebt
- Neu
- Alt
Du musst angemeldet sein, um einen Kommentar schreiben zu können
Guadalupe Gagnon
2 November 2021, 13:09
What Lisa said is true. Also see my comment here
0
Lisa
2 November 2021, 13:05
Das sieht doch ganz normal aus.
1. Es gibt keine Garantie, dass finalize überhaupt aufgerufen wird.
2. Objekte werden erst zerstört, wenn die garbage collection läuft. Solange die JVM keine Notwendigkeit sieht, die gc laufen zu lassen, wird auch kein referenzloses Objekt zerstört und demzufolge auch kein finalize aufgerufen.
Man könnte der JVM nahelegen, die gc auszuführen (wiederum keine Garantie, dass das auch gemacht wird) und dann siehst du, dass (normalerweise) schon einige Male (bei mir so ~35%) finalize aufgerufen wird.
Das machst du mit System.gc();
hier hab ich mal ne main Methode mit einer Schleife über 100 Iterationen die in jeder Iteration einen Hund und eine Katze erstellt. Danach wird ersucht, die gc auszuführen. Wie gesagt, ich habe hier einiges an output (70 Zeilen).
Edit: Mittlerweile ist finalize auch als deprecated markiert worden. +1