如何识别具有骨干网的内存泄漏.js

How to Identify A Memory Leak with Backbone.js

本文关键字:骨干网 内存 泄漏 js 何识别 识别      更新时间:2023-09-26

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

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

谢谢!

最佳做法是使用 listenTo 而不是 onbind 。并且不要忘记在删除实例时stopListening

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

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

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

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

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