Ember-body类初始化程序泄漏内存

时间:2018-09-28 17:00:21

标签: javascript ember.js

我在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中也包含重现和跟踪错误的步骤...

有人知道如何解决此问题吗?任何帮助,高度赞赏!

0 个答案:

没有答案