zfe*_*ran 10 javascript memory-leaks three.js
似乎Three.js没有很好的方法来处理THREE.Scene该场景中的一个和所有对象.
目前我正在做以下事情:
$.each(scene.__objects, function(idx, obj) {
scene.remove(obj);
if (obj.geometry) {
obj.geometry.dispose();
}
if (obj.material) {
if (obj.material instanceof THREE.MeshFaceMaterial) {
$.each(obj.material.materials, function(idx, obj) {
obj.dispose();
});
} else {
obj.material.dispose();
}
}
if (obj.dispose) {
obj.dispose();
}
});
Run Code Online (Sandbox Code Playgroud)
查看Chrome Heap剖析器,仍有许多对象无法清理(纹理,着色材质,矢量等).
我同意 arriu 的观点,应该有一种更干净、通用的方法来处理 Three.js 中的内存,可能从场景节点开始,一直向下遍历。我还认为应该扩展他上面的通用函数,以便处理更多类型的内存分配。
webgl_test_memory.html它做了一些非常具体的例子,并在分配后立即释放内存。webgl_test_memory2.html此示例还通过将网格添加到数组,然后遍历并处理数组的元素来执行一些非常具体的操作。此方法无法处理函数调用中进行的许多内存分配。我并不是说这两个例子不释放内存。我认为场景节点应该有一个方法来释放它下面的所有内存。
| 归档时间: |
|
| 查看次数: |
7042 次 |
| 最近记录: |