Похоже, что у 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 Heap, есть еще много объектов, которые не очищаются (Текстуры, шейдерные материалы, векторы и т.д.).