Ember + Three.js =内存泄漏

时间:2017-08-08 12:30:56

标签: ember.js three.js

我在我的一个ember项目中使用了three.js。不幸的是,当JS Heap随着时间的推移而逐渐消失时,我在解决three.js对象方面做错了。

我创造了一个Ember Twiddle:https://ember-twiddle.com/70fcf110ceec3cd39b77cb9c8915f762

(在这个例子中,只有最小的,没有几何形状,没有材料,没有网格)

打开Chrome开发者工具性能标签,选择“内存”并开始录制。点击Ember Twiddle App中的“start”,让它运行2分钟。停止录制并查看JS堆,节点和监听器。

Memory Record

相关守则:

didInsertElement() {
  this._super(...arguments);

  const container = this.$('.webgl-container');

  const renderer = new THREE.WebGLRenderer({antialias: true, alpha: true});
  renderer.setSize( container.width(), container.height() );

  container.append( renderer.domElement );
  this.set('webGLRenderer', renderer);

  const camera = new THREE.PerspectiveCamera();
  const scene = new THREE.Scene();

  renderer.render( scene, camera );

},

willDestroyElement() {

  const renderer = this.get('webGLRenderer');
  renderer.forceContextLoss();
  renderer.context = null;
  renderer.domElement = null;

  this._super(...arguments);
}

有没有人知道如何在Ember中正确销毁three.js对象?

0 个答案:

没有答案