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