Hi,
ich habe eine kleine Javascript-Applikation geschrieben.
Dabei habe ich den Applikationscode erstmal in eine "Seiten-Klasse" gekapselt, welche für die Darstellung der einzelnen Teil-Screens verantwortlich ist. Neben diesen Screen-Funktionen (welche im wesentlichen nur Templates aufrufen und in die Seite einfügen und dann etwaige Buttons u.a. mit Actions versehen) gibt es eben die Listener-Funktionen.
Nun ist mir folgendes Szenario einigermaßen verständlich (korrigiert mich bitte, wenn das falsch ist).
angenommen ich habe eine Klasse "Screens", welche u.a. Methoden bereithält, welche per listen an Elemente meines DOM gebunden werden.
Wenn ich sämtliche Referenzen auf mein Screens-Objekt entferne, dann wird es trotzdem nicht entsorgt, da durch das binding der listener-Funktionen diese noch aufgerufen werden könnten. Um mein Objekt also tatsächlich zu entsorgen, muss ich alle Listener entfernen.
Jetzt andersherum gedacht:
momentan ist diese eine Screens-Klasse für eine ganze Gruppe an Sichten verantwortlich (allerdings bin ich am Überlegen, pro einzelne Sicht eine einzelne Klasse zu schreiben, bin mir aber über Vor- und Nachteile noch nicht ganz im Klaren).
Das Objekt hat eine Referenz auf meinen Element-Knoten, in dem ich den Inhalt darstellen will und ersetzt beim Anzeigen einfach dessen Inhalt durch den Neuen.
Wird dadurch auch der Garbage Collector für den alten Inhalt aufgerufen? Oder bleibt dieser im Speicher, da noch durch die Listener Referenzen dafür vorliegen?
Dazugehörende Frage:
gibt es für den Firefox oder einen anderen Browser eine einfache Möglichkeit, den Speicherverbrauch der aktuellen Seite bzw. von JavaScript-Objekten anzuzeigen? Oder vielleicht sogar, was insgesamt so im Speicher rumfliegt?
Bis die Tage,
Matti