原因

切换时没有清除模型占用内存

关于内存问题:

  1、在scene下有很多object对象,这些对象可以是你定义的mesh或者loader的模型。这些    object下有material,geometry,这两者和内存紧密关联。
  2、总体形成:scene->object->内存,这样的格局。

  3、scene.clear()仅仅是清除scene->object,保证模型不显示,并不会去除object->内存的关联,因此无法触发浏览器垃圾回收机制。
  4、因此,需要dispose每个object的geometry和material来释放内存

解决办法

在页面销毁前beforeDestroy()执行模板销毁,释放内存

memoryClean() {

  

      const meshes = [];

      scene.traverse(function (object) {

        if (object.isMesh) meshes.push(object);

      });

      for (let i = 0; i < meshes.length; i++) {

        const mesh = meshes[i];

        mesh.material.dispose();

        mesh.geometry.dispose();

        scene.remove(mesh);

      }

}

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐