我正在开发一个类似于幻灯片放映的网络应用程序,其中当前图像被绘制到 Canvas 上,您可以使用下一个/上一个按钮翻阅图像。图像加载了 someImage.src
并且出于性能原因,我在用户查看第一张图像时在后台执行此操作。
Firefox 在预加载期间分配了大量内存(比 Chrome 或 Safari 多 20-30 倍,甚至是 IE 的两倍)。此外,如果我更改幻灯片放映,我可以通过在后台加载幻灯片放映的 xml 描述(使用下拉菜单)而网站的 URL 保持不变,不内存已释放,但分配了很多新内存。直到我更改或重新加载网站的 URL,Firefox 才会释放内存。此行为不同于所有其他浏览器。
那里发生了什么?为什么火狐这么饿?任何想法,如何解决? 有没有办法强制 Firefox 释放内存或减少它用于预缓存加载(但未显示)图像的内存?
最佳答案
即使有时看起来 firefox 分配了越来越多的内存,这也可能是骗人的。 Firefox 垃圾收集器的工作方式有些奇怪(对我来说)。在 Firefox 决定释放大量内存之前需要 2-8 分钟,这并不罕见。可能值得查看源代码。
但是,您可以通过null
一些变量/引用来加快处理速度,这样垃圾收集器就有机会更早地检测到它应该放弃什么。这对于 Canvas 元素/引用尤其是一个好主意。因此,轻松设置不再使用/需要的变量
myCanvasRef = null;
应该为你做一些工作。如果您仍然认为 Firefox 使用了太多内存,请打开一个新选项卡并输入 about:memory。这将为您提供当前浏览器内存使用情况的详细 View 。例如,您可以查看该内存是否用于 Javascript 代码、图像或其他对限制坏人非常有用的东西。
关于javascript - 如何强制 Firefox(版本 6)释放内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7159127/