用threejs释放内存
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用threejs释放内存相关的知识,希望对你有一定的参考价值。
当我使用scene.remove(网格)移除网格时,我有一些问题在三j中释放内存,网格被删除但似乎没有释放从js使用的内存。
我正在使用webglrenderer和缓冲几何来测量网格和窗口。
答案
这可能是js内存使用的黑暗面。
首先尝试为对象设置原始值。
mesh.geometry.dispose();
mesh.geometry = null; // or undefined .
//also cool
delete mesh.geometry
另一种方式(尝试一些黑客):
mesh.geometry = VerySmallmesh.geometry //see for three.js how to do this if this is not correct mesh.geometry = null;
// try to override memory stack
你必须确定这个对象只是他自己的一个例子(怎么说)。确保你没有克隆,如果你有,你也需要摧毁他。
更新:我想再说一遍,使用slice方法从forEach或for循环中的对象清除数组。
另一答案
我在使用我的项目时也遇到了同样的问题。我怀疑你只是从场景中移除网格,而不是从内存中移除。尝试执行以下操作来释放内存。它正在为我工作。
if (mesh) {
scene.remove(mesh);
mesh.geometry.dispose();
mesh.material.dispose();
mesh = [];
}
此外,请通过此StackOverflow讨论进一步说明。 freeing memory in three.js
以上是关于用threejs释放内存的主要内容,如果未能解决你的问题,请参考以下文章