Javascript 三个 JS 和 GC

Javascript THREEJS and GC

我尝试优化我的 threejs 场景,(即使不使用该场景也会增加 CPU 使用率)。 我阅读了很多解决方案,并尝试使用 dispose() 删除网格内存(尽量避免内存泄漏)

labelMesh[i].geometry.dispose();
labelMesh[i].material.dispose();

但是当我检查 Javascript Profiler 时,dispose() GC 增加了 2 倍 CPU。

没有处置():

使用处置():

我保留这个解决方案还是不保留?什么是最佳选择?

I keep this solution or no ? What is a best option ?

绝对推荐使用.dispose()。关于这个主题实际上有一个官方指南:

https://threejs.org/docs/index.html#manual/en/introduction/How-to-dispose-of-objects

但是,即使在正确调用 .dispose() 时,仍然存在阻碍 three.js 释放资源的问题(请参阅 https://github.com/mrdoob/three.js/issues/12447)。发生这种情况是因为 three.js 的内部渲染列表仍然包含对某些对象的引用。由于这些隐藏的引用,调用 .dispose() 将释放 GPU 内存但不会释放 CPU 内存。

解决此问题的方法是调用 renderer.renderLists.dispose().

three.js R107