当我使用scene.remove(网格)移除网格时,我在三j中释放内存时出现了一些问题,网格被移除但似乎没有释放使用js的内存。
我正在使用webglrenderer和缓冲测量法来处理网格和窗口。
答案 0 :(得分:6)
这可能是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循环中对象的数组。
答案 1 :(得分:0)
我在使用我的项目时也遇到了同样的问题。我怀疑你只是从场景中移除网格,而不是从内存中移除。尝试执行以下操作以释放内存。它正在为我
if (mesh) {
scene.remove(mesh);
mesh.geometry.dispose();
mesh.material.dispose();
mesh = [];
}
此外,请仔细阅读StackOverflow讨论以获得进一步说明。 freeing memory in three.js