我在所有测试的浏览器上发现了这个问题 - IE、Firefox、Chrome和Apple的Safari。
据说,刷新浏览器、返回按钮或前进链接应该会清除浏览器节点、JavaScript变量和对象等。但是 WebGL 不适用于这种情况。当我开发一个需要约 100MB 到 200MB 内存的复杂 WebGL 应用程序时,我首先注意到这一点。在开发过程中,我必须经常进行刷新操作,而我的电脑在5到10次刷新后就会开始变慢和冻结。
经过一些研究,我意识到这不应该是这样的。对于内存泄漏的通行解决方案是刷新页面,这应该释放所有JavaScript对象和变量以及DOM节点。但是看看下面的图片:
那么问题出在哪里呢?在小型应用程序中可能不会注意到,但对于像我这样的大型 WebGL 应用程序(orbitingeden.com)来说,这是一个真正的问题,并且我的用户将认为软件比实际更占用资源。下图显示这些刷新操作吞掉了我的所有可用内存,因此垃圾回收没有正常工作,或者 JS 和 DOM 对象没有被释放:
(来源:orbitingeden.com)
有人知道如何强制浏览器真正释放内存的技巧吗?为什么所有的文档都是错误的呢?