使用我最近发现的 chrome 开发工具,我使用模块化概念的应用程序会在内存中留下一些 Module 对象,即使它们没有被我的任何其他应用程序对象直接引用。
这里的问题似乎是,它们在某些函数范围内被引用。
正如您在以下屏幕截图中看到的:
函数范围中有很多引用。
这是一小部分代码,它演示了在我的应用程序中如何发生这种情况的多种方式之一。由于module
在里面someCallback
引用了一个引用,所以我不能再删除自己了。
function augmentModule(core, module){
var someCallback = function(){
module.stop();
};
module.listenTo(core, "someEvent", someCallback);
}
我的问题是:
这是我必须担心的真正的内存泄漏,还是这个对象会在稍后被 JavaScript 引擎垃圾收集?JavaScript 引擎是否知道“此对象仅从函数和闭包范围引用,并且没有“真实”引用,因此我可以删除它。” ?