角度内存泄漏

时间:2014-03-19 03:54:51

标签: angularjs

我使用角度1.2.6,并在切换Angular管理的视图时出现内存泄漏问题。

当切换视图时,DOM看起来不会被释放。

我做了一个非常深入的研究如何解决角度中的内存泄漏问题,但问题仍然存在。

你可以看到'分离的DOM'使用Chrome的个人资料工具。

这里的一个非常简单的应用: http://myclients.azurewebsites.net/#/

也遇到了这个问题?

您可以参考 Alex Shnayder 提出的问题: http://www.marshut.com/iknntu/leaking-scope-when-method-on-scope-references-scope-itself.html

与我完全一样的问题。

1 个答案:

答案 0 :(得分:0)

当试图解决任何记忆问题并深入战壕时,我有时会寻找任何奇怪的东西并尝试研究它们并逐一排除。 这可能不是问题,但似乎很奇怪。我最近要求我的一位同事清理这些东西只是因为我不希望模块成为全局变量。

在你的app.js

//app.js
var myclients = myclients || {};
myclients.app = angular.module("myclients", ["ngRoute", "upidamodule"]);

var myclients创建一个全局变量。通常,所有模块和应用程序对象都封装在角度内。

我并不是说这是导致问题的原因,但我认为找到未解决的引用的GC分析器现在有两条路径。一个是通过角度对象本身,第二个是来自窗口对象,因为var myclients。

现在你谈到的对象包括$ scope,$ parent等以及包含等等,它们必须封装在模块/ app中,并在那里保存引用。

对于Chrome中的GC来说,这是一个有问题的情况 - 我不是Chrome的专家 - 只是推测。

我建议你尝试这个选项。结帐jQuery and listener issues

等等