查看对象引用的工具

有没有Node.js或浏览器的工具,我可以找出哪些对象持有对象X的引用?

现在我正在使用Backbone进行前端开发,即使我删除了视图,但是之后似乎仍然有对它们的引用。

我首先怀疑这种行为的原因是因为我在Chrome和Mozilla中使用插件/插件进行Backbonedebugging。

这确实让我怀疑,也许这些程序本身就是持有引用到骨干对象的程序!

首先,可悲的是没有办法做到这一点。 你可以查看谁调用一个函数和对象哪个特定的variables作为参考。 这不是因为Backbone / Node.js,而是Javascript本身。 当你replaceobject / Array时,javascript只将目标内存地址传递给variables。

但是我认为很有可能你有内存泄漏问题的原因不是因为来自其他variables的引用,而是在Backbone中使用的事件处理程序(也被称为“僵尸视图”)

一旦在View中设置了事件处理程序,除非您仅使用listenTo作为Backbone事件,而使用this.$el listenTo作为jQuery事件,否则在实际删除视图( .remove() )之前,需要确保未设置所有事件。 因为通过listenTo设置的事件和this.$el在删除视图时被Backbone Core自动删除。 而由Model.on或全局jQuery $设置的事件将不会如此。

所以,请检查您的整个代码是否使用.on或全局jQuery对象来设置事件,如果您有,将它们replace为listenTothis.$el.on或手动取消它们之前您删除它们。