AngularJS迁移后出现大量内存泄漏

时间:2015-09-16 15:33:27

标签: javascript jquery ajax angularjs memory-leaks

目前我正在将AngularJS添加到一个网站中,该网站无法一次完全转换,但已经通过jQuery / Ajax实现了单页应用功能。

为了让两个世界协同工作,我有一个主控制器,它知道当前的页面控制器,并在触发页面更改的ajax机制时调用$ destroy()。所有包含的范围都得到了很好的清理,新的html进入页面,然后由主控制器编译,以激活所有新的角度内容,它们也能很好地工作。

唯一的问题是,在每次页面更改时,整个DOM似乎都会粘在内存中,并且不会释放到垃圾回收中,导致每页导航时消耗+20到+35 MB的RAM。

http://i.kw.cx/ip/6195134616104642286.png

正如您在快照的图像上看到的那样,有大量的分离DOM元素似乎都连接到jQuery / jQuery缓存。

问题似乎类似于此处描述的问题:How to catch memory leaks in an Angular application?

所以我检查了jQuery的用法,而AngularJS正在使用加载的完整版jQuery,而不是jqLit​​e版本,因为我能够在控制器中收到的$ element上使用所有可用的插件和方法 - 我暴露给窗口对象来观察它。

因此,由于网站和AngularJS使用的是相同的jQuery版本,因此每个持有DOM引用的2个不同内部缓存应该没有问题,并且可能会混淆。但我必须补充一点,该页面仍在相当旧的jQuery v1.7.1上运行,因为它目前无法更新。

由于我已经删除了除简单HTML和Angular指令之外的所有内容,我实际上已经没有了下一步的想法,所以任何想法,提示或线索都非常受欢迎!

在此先感谢,我已经花了一天多的时间了......

0 个答案:

没有答案