我正在调查Ember(使用Ember数据)应用程序中的内存泄漏问题。问题发生在我的测试中,我在每次测试完成后在Ember应用程序上调用reset()。事实证明,在创建新的容器之前,reset()不会删除对容器的所有引用,导致许多容器挂在内存中,泄漏很重要,因为容器保留了所有容器缓存中的控制器和路由。
然后我使用Chrome Dev Tool来分析内存,我得到的其中一条保留路径是:
controller:product/create in 27138485
cache in Container @27017929
container in @26910113
13 in @26702605
code in function() @26588769
adapterFor in @26498509
prototype in function() @26491127
Store in Class @26491123
DS in Window / localhost:8889/tests @26461671
有没有人在Ember / Ember数据中遇到过这样的内存问题?
我也尝试了类似下面的内容:
function setup() {
var app = Application.createWithMixins({
rootElement: '#ember-testing'
});
app.setupForTesting();
app.injectTestHelpers();
return app;
}
在每次测试之前设置新的应用程序
和
function teardown() {
Ember.run(this.App, 'destroy');
}
在每次测试后销毁应用程序。但是仍然有许多对前一次测试创建的容器的引用。