Javascript、js和GC

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

我尝试优化我的threejs场景(即使不使用场景,CPU使用率也会大幅增加)。 我阅读了很多解决方案,并尝试使用
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();