我创建了一个对象this.bookView = new BookView();
我执行this.bookView=null
时,垃圾收集器不会删除该对象。
“ Google Dev工具配置文件快照保留器”窗口显示以下连接(表明某些内容引用了该对象)。
除"Preview is not available"
外,所有行均为context in ()
。
问题是BookView
具有addSheet
函数变量,该变量尚未在任何地方使用,但通过_this
拥有对自身的引用。
我试过的
1)this.bookView.addSheet = null;
(无济于事)
2)delete this.bookView.addSheet;
(无济于事)
我的问题:
1)如何从Window删除此连接并使bookView
被垃圾回收?
2)为什么addSheet
变量是从Window对象链接的?
3)transitions
窗口上的descriptors
和retainers
是什么?
4)我可以使用哪些其他工具来找到有关这种内存泄漏的更多详细信息。
附言bookView
对象在Durandal页面内创建。 this.bookView
基本上是一个page1.bookView
。该页面已正确删除。在deactivate
(页面删除)功能期间,我调用this.bookView = null;
最佳答案
如果您不是从BookView
实例化function
,则this
将是您的window
对象,该对象是全局的。您已将其全局附加到一个将一直存在的对象,直到您关闭浏览器或选项卡。您可以尝试通过尝试BookView
摆脱delete window['bookView']
编辑:在您的Durandal页面中停用回调,通过您的this
并删除其键。
for(var key in this)
delete this[key];