Three.js内存泄漏

时间:2015-10-23 16:41:22

标签: javascript memory-leaks three.js

我注意到three.js中的奇怪内存泄漏(r73)。 重现的步骤:

1)在谷歌浏览器中打开以下链接(46.0.2490.80米)

http://threejs.org/examples/#webgl_test_memory

2)打开DevTools - >个人资料 - >采取堆快照。请参阅下面的屏幕截图:

3)10秒后拍摄另一个堆快照。正如您所看到的堆大小增加了。

Snaphots

但如果在没有任何服务器而不是堆大小的计算机上本地打开此页面将在5-6 Mb的范围内。

为什么在本例页面打开的情况下,使用的内存大小会永久增加?

提前致谢!

最好的问候,瓦西里。

2 个答案:

答案 0 :(得分:0)

动态内存分配/释放示例不仅泄漏了@示例链接:http://threejs.org/examples/webgl_test_memory.html,而且如果您从本地网络服务器@ Three.js r74运行它。

GPU内存利用率持平。

该示例似乎是积极地进行垃圾回收,并且在您运行文件路径而不是网络服务器时似乎没有泄漏。

我尝试在我的测试中调用更多的dispose方法:



function render() {
				var geometry = new THREE.SphereGeometry( 50, Math.random() * 64, Math.random() * 32 );

				var texture = new THREE.Texture(createImage());
				texture.needsUpdate = true;

				var material = new THREE.MeshBasicMaterial({ map: texture, wireframe: true })
				var mesh = new THREE.Mesh( geometry, material );
				scene.add( mesh );
				renderer.render( scene, camera );

				scene.remove( mesh );				

				mesh.geometry.dispose();
				mesh.material.dispose();
				texture.dispose();
				
				renderer.dispose( mesh );
				renderer.dispose(texture);
				renderer.dispose(mesh.geometry);
				renderer.dispose(mesh.material);
			}




答案 1 :(得分:0)

我在 Firefox 中做了同样的测试,并没有发现内存消耗有任何增加。他们要么修复了 Three.js 中的问题,要么与 chrome 的 webgl 引擎有关。

Memory measurements