用threejs释放内存

时间:2016-10-06 20:19:42

标签: javascript three.js

当我使用scene.remove(网格)移除网格时,我在三j中释放内存时出现了一些问题,网格被移除但似乎没有释放使用js的内存。

我正在使用webglrenderer和缓冲测量法来处理网格和窗口。

2 个答案:

答案 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