Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用CanvasRenderer可能存在内存泄漏_Javascript_Three.js - Fatal编程技术网

Javascript 使用CanvasRenderer可能存在内存泄漏

Javascript 使用CanvasRenderer可能存在内存泄漏,javascript,three.js,Javascript,Three.js,我的应用程序内存泄漏。我设法将其归结为一个简单的测试用例: 在场景中添加和删除几何体时,似乎存在泄漏 当fiddle启动时,打开一个JavaScript控制台并单击该对象几次。请注意,三个.js _objectsreeved[]数组被打印出来,并且永远不会变为0(我认为这意味着垃圾收集器永远不会删除它们) 以类似的方式,如果你使用Chrome Profiles->Record Heap Allocation功能,启动应用程序,单击几次,停止配置文件并在“mesh”上进行过滤,你会注意到有很多三个

我的应用程序内存泄漏。我设法将其归结为一个简单的测试用例:

在场景中添加和删除几何体时,似乎存在泄漏

当fiddle启动时,打开一个JavaScript控制台并单击该对象几次。请注意,三个.js _objectsreeved[]数组被打印出来,并且永远不会变为0(我认为这意味着垃圾收集器永远不会删除它们)

以类似的方式,如果你使用Chrome Profiles->Record Heap Allocation功能,启动应用程序,单击几次,停止配置文件并在“mesh”上进行过滤,你会注意到有很多三个。就浏览器而言,mesh仍然存在

如果将渲染器切换到
WebGLRenderer
,这两个问题都会消失


这是CanvasRenderer中的一个bug还是我使用不正确

这是CanvasRenderer中的一个bug。看

scene = new THREE.Scene();

if ( renderer instanceof THREE.CanvasRenderer ) {

    scene.__lights = { length: 0, push: function(){}, indexOf: function (){ return -1 }, splice: function(){} }
    scene.__objectsAdded = { length: 0, push: function(){}, indexOf: function (){ return -1 }, splice: function(){} }
    scene.__objectsRemoved = { length: 0, push: function(){}, indexOf: function (){ return -1 }, splice: function(){} }

}