如何使用Backbone.js识别内存泄漏

时间:2013-10-21 18:49:41

标签: javascript backbone.js memory-leaks

我相信我的Backbone.js应用中存在内存泄漏。在我将一些Backbone.View对象打印到控制台之后,我得出结论,并且看到cid#在点击一下后增加到数百个。

这种增加的cid#是内存泄漏的明确标志吗?是否有任何Heap概要分析工具我可以看到创建的对象,就像Java语言一样? Backbone.js的最佳做法是什么,以确保没有泄漏?

谢谢!

2 个答案:

答案 0 :(得分:11)

最佳做法是使用listenTo代替onbind。删除实例时不要忘记stopListening

我建议使用Chrome Profiler进行泄漏检测:https://developers.google.com/chrome-developer-tools/docs/javascript-memory-profiling

您也可以尝试使用Chrome插件调试Backbone应用: https://github.com/Maluen/Backbone-Debugger用于调试Backbone应用程序。

答案 1 :(得分:1)

探查器是找出泄漏位置的唯一来源。但是有更简单的方法可以看到更大的图景。转到chrome dev工具中的时间轴然后记忆。阅读图表会更容易,并会向您显示内存和DOM创建/销毁的峰值。

在应用程序尽可能地管理内存之前,您不必担心清除泄漏。用户会注意到内存峰值,因为应用程序会突然出现;他们不会注意到99.9%的泄漏。

您最好花时间学习如何在浏览器中管理内存。 Backbone在管理内存方面做得不好。更好地使用内存:在DOM节点上使用对象池,在模型更改时更新DOM元素,尽可能多地保留模板中的javascript,仅使用渲染功能一次,加载图像时要小心。有很多技巧。以下是使您成为主干应用程序的技术示例:https://github.com/puppybits/BackboneJS-PerfView