Speichermanagement
-
Meinst du so?
Button tb = new Button(); tb = new Button();
In dem Fall werden 2 Objekte erstellt. Das erste wird aber wieder vom Garbage Collector gelöscht, weil es keine Variable mehr gibt, die dieses Objekt referenziert.
-
THX gnau das war es was ich wissen wollte DrZoidberg.
mfg
-CodeMaster-
-
Das erste wird aber wieder vom Garbage Collector gelöscht
Vielleicht auch nicht
-
interpreter schrieb:
Das erste wird aber wieder vom Garbage Collector gelöscht
Vielleicht auch nicht
irgendwann bestimmt
-
TriPhoenix schrieb:
interpreter schrieb:
Das erste wird aber wieder vom Garbage Collector gelöscht
Vielleicht auch nicht
irgendwann bestimmt
Nein, nicht unbedingt. Wenn das Programm beendet wird, bevor der GC zuschlägt, dann schnappt er es sich nicht. Man kann sich also zum Beispiel nicht darauf verlassen, dass eine finalize-Methode eines beliebigen Objektes jemals aufgerufen wird, auch wenn man keine Referenz auf dieses Objekt mehr hat.
-
Wenn das Programm beendet wird, bevor der GC zuschlägt, dann schnappt er es sich nicht.
Exakt.
-
Und wie entferne ich dann das Objekt sicher aus dem Speicher?
mfg
-CodeMaster-
-
Der GC gibt den Speicher eh nicht an das Betriebssystem zurück, sondern nur an die JVM. Der gesamte, von der JVM belegte Speicher wird erst beim Beenden der JVM an das Betriebssystem zurückgegeben. ...AFAIK. Es kann aber sein, dass die JVM auch zwischendurch mal Speicher zurück gibt. Das weiß ich nicht.
-
Du kannst ein Object in Java nicht explizit löschen, es gibt dafür keine Anweisung. Als C++-Programmierer eine Vorstellung die einen wahnsinnig machen kann, aber damit muß man in der Java-Welt leben.
Es gibt die Anweisung
System.gc();
mit der man den GC veranlassen kann, das er doch bitte mal "arbeiten" soll - sprich aufräumen. Aber selbst dann kann man sich nicht sicher sein. Wir haben mal in einem Test mit Threads eine Kontrolle machen lassen. Keine Chance, die Objekte wollte er einfach nicht löschen.
Der GC räumt aber auf jeden Fall dann auf, wenn der JVM-Speicher knapp wird.
-
THX
mfg
-CodeMaster-