{"id":1930,"date":"2013-06-11T14:36:01","date_gmt":"2013-06-11T12:36:01","guid":{"rendered":"http:\/\/www.tutego.de\/blog\/javainsel\/?p=1930"},"modified":"2013-06-11T14:36:01","modified_gmt":"2013-06-11T12:36:01","slug":"einmal-finalizer-vielleicht-mehrmals-die-automatischen-speicherbereinigung","status":"publish","type":"post","link":"https:\/\/www.tutego.de\/blog\/javainsel\/2013\/06\/einmal-finalizer-vielleicht-mehrmals-die-automatischen-speicherbereinigung\/","title":{"rendered":"Einmal Finalizer, vielleicht mehrmals die automatischen Speicherbereinigung"},"content":{"rendered":"<p>Objekte von Klassen, die eine finalize()-Methode besitzen, kann Oracles JVM nicht so schnell erzeugen und entfernen wie Klassen ohne finalize(). Das liegt auch daran, dass die automatische Speicherbereinigung vielleicht mehrmals laufen muss, um das Objekt zu l\u00f6schen. Es gilt zwar, dass der Garbage-Collector aus dem Grund finalize() aufruft, weil das Objekt nicht mehr ben\u00f6tigt wird, es kann aber sein, dass die finalize()-Methode die this-Referenz nach au\u00dfen gibt, sodass das Objekt wegen einer bestehenden Referenz nicht gel\u00f6scht werden kann und so zur\u00fcck von den Toten geholt wird. Das Objekt wird zwar irgendwann entfernt, aber der Finalizer l\u00e4uft nur einmal und nicht immer pro GC-Versuch. Einige Hintergr\u00fcnde erf\u00e4hrt der Leser unter http:\/\/www.iecc.com\/gclist\/GC-lang.html#Finalization.<\/p>\n<p>L\u00f6st eine Anweisung in finalize() eine Ausnahme aus, so wird diese ignoriert. Das bedeutet aber, dass die Finalisierung des Objekts stehen bleibt. Die automatische Speicherbereinigung beeinflusst das in ihrer Arbeit aber nicht.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Objekte von Klassen, die eine finalize()-Methode besitzen, kann Oracles JVM nicht so schnell erzeugen und entfernen wie Klassen ohne finalize(). Das liegt auch daran, dass die automatische Speicherbereinigung vielleicht mehrmals laufen muss, um das Objekt zu l\u00f6schen. Es gilt zwar, dass der Garbage-Collector aus dem Grund finalize() aufruft, weil das Objekt nicht mehr ben\u00f6tigt wird, [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":"","_links_to":"","_links_to_target":""},"categories":[11],"tags":[],"class_list":["post-1930","post","type-post","status-publish","format-standard","hentry","category-insel"],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/posts\/1930","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/comments?post=1930"}],"version-history":[{"count":0,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/posts\/1930\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/media?parent=1930"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/categories?post=1930"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/tags?post=1930"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}