4

我相信我的 Backbone.js 应用程序中存在内存泄漏。在我将一些 Backbone.View 对象打印到控制台后,我得出了这一结论,只需单击一下,就可以看到 cid # 增加到数百个。

这增加 cid# 是否是内存泄漏的明确迹象?是否有任何堆分析工具我可以看到创建的对象,例如使用 Java 语言?使用 Backbone.js 确保没有泄漏的最佳实践是什么?

谢谢!

4

2 回答 2

11

最佳做法是使用andlistenTo代替。并且不要忘记删除实例时。onbindstopListening

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

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

于 2013-10-21T19:32:57.673 回答
1

探查器是找出泄漏位置的唯一来源。但是有一种更简单的方法可以看到更大的图景。转到时间线,然后在 chrome 开发工具中进行内存。阅读图表要容易得多,并且会显示内存和 DOM 创建/销毁的峰值。

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

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

于 2013-10-22T06:03:45.570 回答