我有一个包含大量网格和 MorphAnimMesh 的大型场景。我想在删除网格时释放内存。如果我知道这是最好的方法:
for ( var i = scene.children.length - 1; i >= 0 ; i -- ) {
var obj = scene.children[i];
scene.remove(obj);
obj.deallocate();
obj.geometry.deallocate();
obj.material.deallocate();
obj.material.map.deallocate();
}
如果我在此之后检查任务管理器中的内存使用情况,则没有任何变化。 (试图等待 GC 几分钟但什么也没有。)谷歌 Chrome 内存快照显示对象仍然存在。 THREE.Geometry @1862203 等中的 morphTargets
试图将obj设置为null,但仍然没有内存减少。
知道我做错了什么吗?
这是一款有关卡的游戏,玩家可以从一个关卡切换到另一个关卡。几次更改后,内存使用量增加到非常高。这就是为什么我想在级别更改之前从内存中删除所有对象。
最佳答案
很可能,您需要添加以下部分或全部内容:
geometry.dispose();
material.dispose();
texture.dispose();
查看这些示例:
http://mrdoob.github.com/three.js/examples/webgl_test_memory.html
http://mrdoob.github.com/three.js/examples/webgl_test_memory2.html
three.js r.60
关于javascript - 三js内存管理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13914959/