Javascript、js和GC
我尝试优化我的threejs场景(即使不使用场景,CPU使用率也会大幅增加)。 我阅读了很多解决方案,并尝试使用Javascript、js和GC,javascript,performance,three.js,garbage-collection,cpu,Javascript,Performance,Three.js,Garbage Collection,Cpu,我尝试优化我的threejs场景(即使不使用场景,CPU使用率也会大幅增加)。 我阅读了很多解决方案,并尝试使用dispose()(尝试避免内存泄漏)删除mesh的内存 但是当我检查Javascript分析器时,dispose()将GC的CPU增加了2倍 不带dispose(): 使用dispose(): 我是否保留此解决方案?什么是最好的选择 我是否保留此解决方案?什么是最好的选择 绝对建议使用.dispose()。关于这个话题,实际上有一个官方指南: 但是,即使正确调用了.dispos
dispose()
(尝试避免内存泄漏)删除mesh的内存
但是当我检查Javascript分析器时,dispose()
将GC的CPU增加了2倍
不带dispose():
使用dispose():
我是否保留此解决方案?什么是最好的选择
我是否保留此解决方案?什么是最好的选择
绝对建议使用.dispose()
。关于这个话题,实际上有一个官方指南:
但是,即使正确调用了.dispose()
,仍然有一个问题阻碍three.js
释放资源(请参阅)。这是因为three.js
的内部渲染列表仍然包含对某些对象的引用。调用.dispose()
将释放GPU内存,但不会释放CPU内存,因为存在这些隐藏引用
解决方法是调用renderer.renderLists.dispose()
three.js R107
很高兴知道这一点。我发现,里程碑似乎已设置为r108
。这是否意味着在合并PR后,调用Mesh.dispose()
将处理渲染列表,而无需单独调用renderer.renderLists.dispose()
?是的,不再需要调用renderer.renderLists.dispose()
。但是,发布标签会自动更改,所以我不确定PR是否会在不久的将来合并。对于变更可能带来的性能问题,仍然存在一些担忧。然而,我认为应该没有问题。。。
labelMesh[i].geometry.dispose();
labelMesh[i].material.dispose();