相关疑难解决方法(0)

Backbone.js内存管理,DOM节点数上升

情况:我正在开发一个相当复杂的单页Backbone应用程序,可能会连续运行8-12个小时.因此,需要确保应用程序不会泄漏并在X小时后崩溃或显着减速.

应用程序:该应用程序基于Backbone(mv*),Zepto(类似于jquery),Curl(amd loader)和Mustache(模板)构建.

问题:我刚刚征服了事件监听器.垃圾收集器似乎在清理这些人员方面做得很好,但DOM Node Count不会停止攀爬.

问题:

  • 是否有正确的方法来处理DOM节点以便它们被正确地垃圾收集,或者这个DOM节点计数是否会永远不会减少?
  • 有没有人知道任何这些框架处理DOM节点?可能是小胡子?
  • DOM节点计数甚至是可靠的数字吗?

我真的只是想在我的冒险中找到一个先机,以阻止这些DOM节点上升.任何帮助或指导将不胜感激(并相应地投票).

我假设一旦事件监听器被妥善处理,DOM节点计数就会自行管理,但事实并非如此.

测试


管理不善的DOM节点数

  • 第一次测试:6.8分钟,110,000个DOM节点

编辑:没有时间轴录制,我重新使用相同的脚本随机混搭链接并在7分钟左右拍摄截图.GC发布后我得到了这些结果.

管理不善的DOM节点数

  • 第二次测试:7.1分钟,141,000个DOM节点(没有时间线记录)

编辑:修复后:

DOM节点计数受控制 升级Backbone并使用listenTo和stopListening到处都是

  • 7分钟:6,926个DOM节点(见下面的标记答案).
  • 20分钟:6,000个DOM节点,20个事件监听器,20 MB内存.
  • 25分钟:11,600个DOM节点,44个监听器,内存21.7 MB.
  • 28分钟:9,000个DOM节点,22个事件监听器,内存21.7 MB.
  • 30分钟:13700个DOM节点,123个事件监听器,内存21.7.
  • 31分钟:7,040个DOM节点,30个监听器,内存21.7.

javascript mustache google-chrome-devtools backbone.js zepto

15
推荐指数
2
解决办法
4406
查看次数