我的应用程序中遇到内存泄漏。我设法将其归结为一个简单的测试用例:http://jsfiddle.net/729sv/
在场景中添加和删除几何体时,似乎存在泄漏。
当小提琴开始时,打开一个JavaScript控制台并单击该对象几次。请注意,打印Three.js __objectsRemoved []数组并且永远不会为0(我认为这意味着垃圾收集器永远不会删除它们。)
以类似的方式,如果您使用Chrome配置文件 - >记录堆分配功能,启动应用程序,单击几次,停止配置文件并过滤“网格”,您会注意到有很多THREE.Mesh仍然在浏览器方面。
如果您将渲染器切换为WebGLRenderer
这两个问题都会消失。
这是CanvasRenderer
中的错误还是错误地使用
答案 0 :(得分:2)
这是CanvasRenderer中的一个错误。见ThreeJS garbage collection issue
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(){} }
}