Angular.js内存泄漏

时间:2016-12-08 14:06:35

标签: javascript angularjs memory-leaks

我最近在我的角应用程序中发现了看起来像内存泄漏的东西,当路由改变时内存消耗不断增加。

因此,为了找出我的代码中是否存在问题,我决定退出并创建示例应用程序。

  1. git clone github.com/angular/angular-seed.git
  2. npm start
  3. 打开chrome,开始记录内存时间线
  4. 尝试在屏幕之间切换几次
  5. 以下是我之后在时间轴中观察到的情况: timeline screenshot (控制台中的错误与缺少的favicon相关:))

    有谁知道这种行为的原因是什么?

    UPD:我使用相同的应用程序进行测试,没有角度路由器(我认为它可能是原因)。我只是将视图内容复制到index.html中,并为局部变量添加了ng-show条件" screen"通过ng-click设置" view1"和" view2"

    这是我得到的:timeline screenshot

1 个答案:

答案 0 :(得分:0)

我之前在几个Angular应用程序中处理过这个问题。大多数情况下,当Angular调用大量不必要的摘要循环来检查更改并从$ scope数据更新DOM时,或者您将$ scope绑定到控制器时,会发生这种情况。

在大多数情况下,您可以更好地确保只有您需要的数据在当前范围内,并且不会使Angular不必要地跟踪您未使用的大量数据点。

尝试安装chrome扩展程序,例如ng-inspector:http://ng-inspector.org/或AngularJS Batarang:https://chrome.google.com/webstore/detail/angularjs-batarang/ighdmehidhipcmcojjgiloacoafjmpfk?hl=en

这些都可以为您提供有关哪些数据消耗内存以及摘要循环如何在其中发挥作用的更多信息。从那里,可能需要更改您构建应用程序的方式或选择将哪些数据传递到控制器并绑定到视图。

我有兴趣看看针对此问题发布了哪些其他类型的答案,以及是否有更熟悉Angular2的人知道这是否已通过新版本解决。