我正在使用webGl和Three.js做一个项目。我的问题只有一个:
我需要释放内存,因为在游戏过程中,我必须创建很多对象,所以我不想分配大量的内存。我尝试了很多“代码”,但没有发生任何事情......
现在我用这个:
function deallocazioneScena(){
for ( var i = scene.children.length - 1; i >= 0 ; i -- ) {
deallocazioneObj(scene.children[i]);
}
//camera.position.set(0,50,70);
}
function deallocazioneObj(obj){
scene.remove(obj);
if (obj.geometry) {
obj.geometry.dispose();
}
if (obj.dispose) {
obj.dispose();
}
}
如何让这项工作成功?
答案 0 :(得分:0)
浏览器会为您清理对象。当你取消引用对象时,浏览器将执行垃圾清理,所有这些都将被删除。
要测试这种情况发生的方式和时间,您可以使用Chrome中的时间轴标签。删除大对象后,最终应该看到“垃圾收集”事件。这表明浏览器已执行清理。
就明确而言,没有办法强制浏览器释放特定的内存。但是,依靠垃圾收集器通常很好,因为它在现代浏览器中相当快。不过,我会更关心你分配的对象数量。特别是在3D应用程序中,大量的对象分配(即使对于小对象)也会导致大量的堆流失,这可能会对渲染性能产生负面影响。