Ich habe this.bookView = new BookView();
JavaScript Speicherleck. Ein Objekt wird nicht wegen der Funktionsvariablen entfernt
Der Garbage Collector wird das Objekt kein Objekt erstellt zu entfernen, wenn ich this.bookView=null
tun.
Google Dev Tool Profil Snapshot Retainers Fenster zeigt unter Verbindungen (was zeigt, dass etwas Bezug auf das Objekt hat).
Alle Reihen sind "Preview is not available"
außer context in()
.
Das Problem ist BookView
addSheet
Funktionsvariable hat, die nicht überall (noch) nicht verwendet, sondern hält einen ref durch _this
auf sich.
Was ich versucht:
1) this.bookView.addSheet = null;
(nicht helfen)
2) delete this.bookView.addSheet;
(half auch nicht)
Meine Fragen:
1) Wie entferne ich diese Verbindung aus dem Fenster und mache bookView
zur Müllabfuhr?
2) Warum die addSheet
Variable vom Window-Objekt verknüpft ist?
3) Was sind die transitions
und descriptors
auf dem retainers
Fenster?
4) Welche anderen Tools kann ich verwenden, um mehr Details über diese Art von Speicherleck zu finden.
P.S. Das Objekt bookView
wird in einer Durandal-Seite erstellt. this.bookView
ist im Grunde eine page1.bookView
. Die Seite wurde korrekt entfernt. Während der deactivate
(Seite Entfernung) Funktion aufrufen I this.bookView = null;
'addSheet' oder' AddSheet'? – Oriol
Tippfehler, behoben. 'addSheet'. Danke – AntonIva
Wenn Sie den Debugger pausiert haben und einige der relevanten Variablen in Panels oder in der Konsole angezeigt werden, kann der Devtools-Debugger selbst die Referenzen beibehalten. – wOxxOm