原因
切换时没有清除模型占用内存
关于内存问题:
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);
}
}