我在ember-body-class中发现了内存泄漏,但是不知道如何最好地解决它。内存泄漏在ember-body-class初始化程序中,即在body-class.js第(42)和(58)行中。
export function initialize(instance) {
...
Route.reopen({
...
addClasses: on('activate', function() {
--> const document = instance.lookup('service:-document');
const body = document.body;
['bodyClasses', 'classNames'].forEach((classes) => {
this.get(classes).forEach(function(klass) {
addClass(body, klass);
});
});
...
}),
removeClasses: on('deactivate', function() {
--->const document = instance.lookup('service:-document');
const body = document.body;
['bodyClasses', 'classNames'].forEach((classes) => {
this.get(classes).forEach(function(klass) {
removeClass(body, klass)
});
});
...
}),
});
}
问题是,如果我错了,请纠正我,这些行引用了回调中的instance
,因此从Route原型到实例都有一个引用,因此保留了容器。最后,我们的单元测试用完了内存。
我也已经在github上打开了issue。这是我的复制存储库的链接(https://github.com/crixx/bodyclassplayground)。 repo-readme中也包含重现和跟踪错误的步骤...
有人知道如何解决此问题吗?任何帮助,高度赞赏!