Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ember.js 一旦项目控制器超出范围(内存泄漏),则销毁它们_Ember.js_Ember Data - Fatal编程技术网

Ember.js 一旦项目控制器超出范围(内存泄漏),则销毁它们

Ember.js 一旦项目控制器超出范围(内存泄漏),则销毁它们,ember.js,ember-data,Ember.js,Ember Data,我的应用程序中存在一些内存泄漏问题。在浏览完此博客之后,我尝试在每个循环中实现view,以清除item controller,如下所示: {{#each models itemController="someController" itemViewClass="AS.AutoCleanupView"}} .... {{/each}} 我的autoCleanupView看起来像: AS.AutoCleanupView = Ember.View.extend({ willDes

我的应用程序中存在一些内存泄漏问题。在浏览完此博客之后,我尝试在每个循环中实现view,以清除item controller,如下所示:

{{#each models itemController="someController" itemViewClass="AS.AutoCleanupView"}}
     ....
{{/each}}
我的autoCleanupView看起来像:

AS.AutoCleanupView = Ember.View.extend({

    willDestroyElement: function () {
        //console.log("Auto cleaned : "+this.get('controller'));
        this.get('controller').destroy();
    }

});
现在,我可以看到控制器上调用了destroy,但只是为了确保控制器本身推入一些全局对象。我这样做的方式是在初始化函数中包含以下代码:

initialize: function () {
    AS.collectObjects.push(this);
}.on('init'),
所以现在当我转移到另一条路线时,我希望我的控制器被完全销毁,内存被回收。但当我检查AS.collectObjects的内容时,控制器仍然存在,但其isDestroyed属性设置为true。那么控制器什么时候才能真正从内存中完全清空呢

还有,你们采取了哪些方法来克服内存泄漏。我尝试过使用chrome profiler,但它太冗长了,我真的无法找到核心原因。我也会在控制器的willDestroy钩子中销毁所有手动创建的余烬对象。 任何建议都将不胜感激。谢谢
哦,顺便说一句,我忘了在我们喜爱的IE8浏览器中提到这一点。

添加对项目的引用将防止垃圾收集发生。GC只在对象不再被任何东西引用时才回收对象,并且在感觉合适时回收,而不是立即回收

查看对象是否正确处置的唯一方法是使用浏览器内探查器


当天的轶事声明,我有三个企业应用程序使用Ember,没有发现任何内存泄漏,你确定它是Ember吗?

希望不是Ember,举个例子,我很确定它不是Ember,但我真的很难分析我的应用程序,弄清楚什么不会被破坏,当我看到这些对象仍然存在于我的全局对象中时,我想余烬一定不会清理它们。我试过使用profiler,但我想我的问题应该是如何找到profiler。每次我进出同一条路线时,我都会看到一堆添加的对象,我无法真正弄清楚这些对象到底是什么:(但是考虑到我所走的路线,考虑到你的经验,你能告诉我我是否走的是正确的道路吗?你知道我们必须做些什么来避免内存泄漏吗?一般来说,循环引用、事件侦听器、作用域问题和意外引用是我看到内存泄漏最多的地方,但这也是轶事我读了一些类似的东西,看看你是否能找到任何你可能遵循的反模式。