我有一个很大的场景,有很多Mesh和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,但没有.)Google Chrome内存快照显示对象仍然存在. THREE.Geometry @ 1862203等的morphTarget
试图将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