我的应用正在使用ui-router。我注意到在更改路线时记忆力会不断增加。我已经检查了代码中常见的东西,如事件绑定,元素的破坏等。但是当应用程序首次加载时,我仍然可以获得超过50%的初始内存。我怀疑它的ui路由器,但无法通过其代码找到任何问题。似乎所有东西都被清理干净了。
该应用程序从50MB的初始内存开始,导航到下一页,然后返回30MB,总共80MB,依此类推。 (这是关于chrome,在firefox中它更糟糕)
长话短说明我已经完成了$ destroy方法并在我的测试中导航到下一页$ destroy被执行了100次。
通过在$ destroy中添加以下代码行,它被调用300次,泄漏率也从50%增加到10%。
这个变化是微不足道的,从我测量的cpu加载时间来看,它不影响性能,即使我在$ scope层次结构中有这个循环:
$destroy: function() {
// We can't destroy a scope that has been already destroyed.
if (this.$$destroyed) return;
//Adding this loop gets more $scopes destroyed!!! why?
while (this.$$childHead) {
this.$$childHead.$destroy();
}
var parent = this.$parent;
this.$broadcast('$destroy');
this.$$destroyed = true;
...
我不确定为什么虽然这种情况正在发生,但是也许一些专家可能会解释一下,如果在$ destroy中发生变化有潜在的问题。我使用的是角1.4.7
由于