Internet Explorer 7/Backbone中可能存在内存泄漏?

mar*_*efr 3 javascript internet-explorer-7 backbone.js

我一直在玩Backbone,看看这个框架是不是一个很好的选择,从现在开始在我们的应用程序中继续前进.一个要求是我们必须支持Internet Explorer 7+,另一个要求是每页显示至少200个项目.

为了测试框架我已经构建了一个非常简单的列表,它在除Internet Explorer 7之外的所有主流浏览器中都可以运行.看起来有一些内存泄漏,因为每次重置数据时总渲染时间都会增加.

我已经设置了一些测试场景:

宣布事件:http://jsfiddle.net/mefraimsson/a2YMF/

没有宣布事件:http://jsfiddle.net/mefraimsson/u6byQ/

我有一个想法是,当元素被删除并添加到DOM时,声明的事件永远不会被清除.当我运行测试场景"没有声明事件"时,经常单击重新加载数据,渲染时间非常稳定,但运行"声明事件"时,渲染时间会迅速增加,并且用于IE7的内存量会增加.这就是我认为某处存在内存泄漏的原因.

  • 是否有人有使用Backbone渲染如此大量数据的经验?
  • 是否有人使用Backbone时遇到内存泄漏问题?
  • 使用Backbone处理如此大量的数据时,您是否建议采用其他方法?而不是大量的子视图使用一个视图并迭代模板中的数据可能是一个可能的解决方案,但是感觉你没有充分利用Backbone?
  • 您有什么看法,您认为它与事件的声明有关,还是Backbone的实施泄露了记忆?

提前致谢

Der*_*ley 8

内存泄漏是Javascript应用程序中的常见问题.我认为有一些框架试图为你处理这个,但骨干不会.您正在使用的浏览器确实会对这些泄漏的注意方式及其引起的问题产生一些影响,但它们仍存在于其他浏览器中.它通常不是浏览器有问题,而是通过使用回调函数在Javascript中处理事件绑定的方式.

我写了一篇文章,讨论了这个问题,提出了处理问题的建议,特别是有关意见的建议:http://lostechies.com/derickbailey/2011/09/15/zombies-run-managing-page-transitions-in-backbone-应用/

一定要阅读评论.还有其他一些处理内存泄漏的好建议.