javascript - 如何强制 Firefox(版本 6)释放内存?

标签 javascript firefox memory image-loading

我正在开发一个类似于幻灯片放映的网络应用程序,其中当前图像被绘制到 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/

相关文章:

javascript - 背景图像和颜色在 IE 或 Firefox 中不变

ruby-on-rails - Firefox 中的 JSON.stringify 和换行符

python - 减少 pyomo 模型的内存需求

JavaScript 表单布局管理器

javascript - 关于 React Events 行为的基本查询

css - Firefox BUTTON 子元素不拉伸(stretch)

c - 使用内存空间和初始化分配结构变量时遇到问题

c++ - 如何读取 PCIe 总线上使用的带宽?

javascript - Firebase 函数 FCM

javascript - Chrome 的 javascript 垃圾收集工作方式是否不同?