似乎Three.js没有一种良好的方法来处理
THREE.Scene
及其内部所有对象的释放。目前我正在执行以下操作: $.each(scene.__objects, function(idx, obj) {
scene.remove(obj);
if (obj.geometry) {
obj.geometry.dispose();
}
if (obj.material) {
if (obj.material instanceof THREE.MeshFaceMaterial) {
$.each(obj.material.materials, function(idx, obj) {
obj.dispose();
});
} else {
obj.material.dispose();
}
}
if (obj.dispose) {
obj.dispose();
}
});
通过查看Chrome堆剖析器,发现仍有许多对象没有被清除(纹理,着色器材料,向量等...)。