EventListeners und Garbage Collection

gefunden am 30.12.2008

Folgendes bereitet mir langsam wirklich Kopfzerbrechen: es geht darum, was mit Listenern passiert, wenn deren Objekt nicht mehr gebraucht wird, bzw. ob Objekte wirklich gel?t werden k?n, wenn noch ein Listener darauf gegistriert ist. 1.) Was passiert mit Events, wenn das Objekt, auf das sie horchen, nicht mehr existiert? Also, wenn ich nun ein MyObject habe und einen EventListener hinzuf? MyObject.addEventListener(...), und MyObject sp?r irgendwann gel?t wird (z.B. weil ich es explizit auf "null" setze) -werden damit alle registrierten Listeners des Objekts ebenfalls zum L?en freigegeben oder bleiben sie bestehen und horchen fr?ch weiter? Eigentlich k?e man meinen, das sie ebenfalls automatisch gel?t werden, da sie ja auf Objekt-Ebene registriert wurden, oder? 2.) Aber kann ein Objekt ?haupt wirklich gel?t werden, so lange es noch EventListeners hat? Zitat: Zitat von help.adobe.com Wenn Sie einen Ereignis-Listener nicht mehr brauchen, entfernen sie ihn, indem Sie removeEventListener() aufrufen. Andernfalls k?e es zu Speicherproblemen kommen. Objekte mit registrierten Ereignis-Listenern werden nicht automatisch aus dem Speicher entfernt, da der Garbage Collector (Speichermanagement) keine Objekte entfernt, die noch Verweise enthalten. Das bedeutet ja, das der EventDispatcher durch den registrierten Event noch einen Verweis auf das Objekt enth? und das Objekt deshalb nicht entfernt werde kann. Aber was ist, wenn ich das Objekt "manuell" auf "null" setze? Dann wird es doch zum L?en freigegeben, auch wenn der EventDispatcher noch einen Verweis auf dieses Objekt hat, da das Objekt selbst dann ja nur noch null ist, oder? Etwas verwirrend, das ganze... :confused:

Weitere Nachrichten zum Thema: