【问题标题】:Angular memory leak角度内存泄漏
【发布时间】:2014-03-19 03:54:51
【问题描述】:

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

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

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

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

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

也有这个问题?

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

这跟我的问题一模一样。

【问题讨论】:

标签: angularjs


【解决方案1】:

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

在你的 app.js 中

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

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

我并不是说这是问题的原因,但我认为以某种方式查找未解析引用的 GC 分析器现在有 2 条路径。一个是通过 angular 对象本身,第二个是由于 var myclients 而来自 window 对象。

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多