我一直在尝试为我正在创建的 javascript 游戏制作一些视觉效果,我注意到我用来调节精灵颜色的一段代码使我的浏览器内存使用量不断增加,看似没有限制。
您可以在此处查看代码和内存泄漏:http: //timzook.tk/javascript/test.html
这种内存泄漏仅发生在我的 updateimage() 函数中,当我每帧(通过 setInterval)从画布上下文中调用 getImageData 以使新的 ImageData 对象重新着色时。我原以为javascript的垃圾收集器会破坏旧的垃圾收集器,但如果不是,我不知道如何手动销毁它。任何帮助弄清楚它为什么这样做或如何解决它将不胜感激。
我的问题与这个问题非常相似:What is leaking memory with this use of getImageData, javascript, HTML5 canvas但是,我需要我的代码来运行 setInterval 调用的函数中的每一帧,他将其移出 setInterval 函数的解决方案是这对我来说不是一个选择,我不能发表评论询问他是否找到了其他解决方法。
测试人员请注意:由于此示例使用 getImageData,因此无法仅通过将其放入 .html 文件中进行本地测试,因此需要 Web 服务器。此外,它显然使用 HTML5 元素,因此某些浏览器无法使用它。
编辑:*已解决* 谢谢,下面的解决方案修复了它。我没有意识到你可以像在 drawImage() 中使用图像一样使用画布元素,我重组了我的代码,因此它现在使用的内存显着减少。如果有人想查看,我将此更改后的代码上传到上面链接的页面。