是否有Node.js或浏览器的工具,我可以找出哪些对象持有对象X的引用?
现在我正在使用Backbone进行前端开发,即使我删除了视图,但之后似乎仍然会引用它们。
我首先怀疑这种行为的原因是因为我在Chrome和Mozilla中使用插件/插件进行Backbone调试。
这确实让我想知道这些程序本身是否能够引用Backbone对象!
答案 0 :(得分:3)
首先,遗憾的是没有办法做到这一点。 您可以检查谁调用函数和对象哪个特定变量作为参考。 这不是因为Backbone / Node.js而是Javascript本身。 当您替换object / Array时,javascript只将目标内存地址传递给变量。
但我认为你很可能出现内存泄漏问题的原因不是因为来自另一个变量的引用,而是Backbone使用的事件处理程序(也称为“僵尸视图”)
在View中设置事件处理程序后,您需要确保在实际删除视图(.remove()
)之前取消设置所有事件,除非您仅使用listenTo
用于Backbone事件和{{ 1}}用于jQuery事件。
因为删除View时,Backbone Core会自动删除通过this.$el
和listenTo
设置的事件。
由this.$el
或全局jQuery Model.on
设置的事件不会如此。
所以请检查您的整个代码是否使用$
或全局jQuery对象来设置事件,如果您有,请将它们替换为.on
或listenTo
或手动取消设置它们在删除它们之前。