2014-03-19 42 views
4

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

当视图切换时,DOM看起来没有被释放。

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

您可以使用Chrome的配置文件工具查看“分离的DOM”。

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

也拿到了这个问题?

你可以参考这个问题由亚历Shnayder问: http://www.marshut.com/iknntu/leaking-scope-when-method-on-scope-references-scope-itself.html

这正是同样的问题我。

+2

你可以尝试问github如何解决它,也许这是一个错误https://github.com/angular/angular.js/issues – jcubic

+0

你试图销毁范围之前的$ routeChangeStart ? –

+0

不属于此处,请使用angularjs提交错误并包含屏幕截图以及内存使用情况和内存泄露的转储。 –

回答

0

当试图解决任何内存问题和深入沟渠时,我有时会寻找任何古怪的东西,并尝试研究它们并逐个排除。 这里有些东西可能不是问题,但看起来很奇怪。最近我最近问我的一位同事清理这些事情,仅仅是因为我不希望这些模块是全局变量。

在你app.js

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

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

我不是说这是问题的原因,而是我认为GC分析器以某种方式查找未解析的参考文件现在有2条路径。一个是通过角对象本身,另一个是来自窗口对象,因为var myclients。

现在你谈论的对象包括$ scope,$ parent等和包含等等,它们必须封装在模块/应用程序中,并且在那里保存引用。

这对于Chrome中的GC来说是个问题 - 我不是Chrome的专家 - 只是猜测。

我建议你试试这个选项。除其他事项结帐jQuery and listener issues