javascript - 三js内存管理

标签 javascript memory-management three.js

我有一个包含大量网格和 MorphAnimMesh 的大型场景。我想在删除网格时释放内存。如果我知道这是最好的方法:

for ( var i = scene.children.length - 1; i >= 0 ; i -- ) {
  var obj = scene.children[i];
  scene.remove(obj);
  obj.deallocate(); 
  obj.geometry.deallocate();
  obj.material.deallocate();
  obj.material.map.deallocate();
}

如果我在此之后检查任务管理器中的内存使用情况,则没有任何变化。 (试图等待 GC 几分钟但什么也没有。)谷歌 Chrome 内存快照显示对象仍然存在。 THREE.Geometry @1862203 等中的 morphTargets

试图将obj设置为null,但仍然没有内存减少。

知道我做错了什么吗?

这是一款有关卡的游戏,玩家可以从一个关卡切换到另一个关卡。几次更改后,内存使用量增加到非常高。这就是为什么我想在级别更改之前从内存中删除所有对象。

最佳答案

很可能,您需要添加以下部分或全部内容:

geometry.dispose();
material.dispose();
texture.dispose();

查看这些示例:

http://mrdoob.github.com/three.js/examples/webgl_test_memory.html

http://mrdoob.github.com/three.js/examples/webgl_test_memory2.html

three.js r.60

关于javascript - 三js内存管理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13914959/

相关文章:

javascript - WebGL 多 Canvas three.js 示例

javascript - 我无法使 "commands"在 chrome 扩展中工作

javascript - 用于分割键值对的正则表达式(键 : value key: "va lue") from a string in Javascript

iphone - 消除由于返回创建的变量而导致的内存泄漏

android - Android 中用于 AsyncTask 的过多垃圾收集器

c - 为什么 malloc() 和普通数组声明分配的堆栈帧大小不同?

three.js - 如何在three.js中旋转 Sprite 对象?

javascript - Three.js 将图像放置在相机前面

javascript - 与 Redux react : Module build failed: SyntaxError: Unexpected token <

javascript - 是否可以通过功能将开关按钮设置为真?