gpt4 book ai didi

javascript - 使用 CanvasRenderer 可能存在内存泄漏

转载 作者:行者123 更新时间:2023-12-02 17:59:30 25 4
gpt4 key购买 nike

我的应用程序遇到内存泄漏。我设法将其归结为一个简单的测试用例:http://jsfiddle.net/729sv/

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

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

以类似的方式,如果您使用 Chrome 配置文件 -> 记录堆分配功能,启动应用程序,单击几次,停止配置文件并过滤“网格”,您会注意到有很多三个.就浏览器而言,Mesh 仍然存在。

如果将渲染器切换为 WebGLRenderer,那么这两个问题都会消失。

这是 CanvasRenderer 中的错误还是我使用不当

最佳答案

这是 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(){} }

}

关于javascript - 使用 CanvasRenderer 可能存在内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20675705/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com