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

Kai*_*ann 4 javascript memory firefox image-loading

我正在制作一个类似幻灯片的网络应用程序,其中当前图像被绘制到画布上,您可以使用next/prev按钮翻阅图像.加载的图像someImage.src,出于性能原因,我在后台进行,同时用户查看第一张图像.Firefox在预加载期间分配了大量内存(比Chrome或Safari多20至30倍,甚至是IE的两倍).此外,如果我更改幻灯片放映,我可以通过在背景中加载幻灯片放映的xml描述(使用下拉菜单),同时网站的URL保持不变,没有内存被释放,但很多新的分配.直到我更改或重新加载网站的URL,Firefox才会释放内存.此行为与所有其他浏览器不同.

那里发生了什么?为什么Firefox如此饥饿?任何想法,如何解决?有没有办法强制Firefox释放内存或减少用于预先缓存加载(但未显示)图像的内存?

jAn*_*ndy 5

即使有时看起来firefox会分配越来越多的内存,这可能具有欺骗性.Firefox垃圾收集器的工作有些奇怪(对我来说).在Firefox决定释放大量内存之前需要2-8分钟并不罕见.可能值得一看源代码.

但是,您可以null通过一些变量/引用来加快速度,这样垃圾收集器就有机会更早地检测它应该放弃的内容.使用canvas元素/引用尤其是个好主意.因此,轻松设置不再使用/需要的变量

myCanvasRef = null;
Run Code Online (Sandbox Code Playgroud)

应该为你做一些工作.如果您仍然认为Firefox使用了太多内存,请打开一个新选项卡并输入about:memory.这将为您提供当前浏览器内存使用情况的详细视图.例如,您可以看到该内存是否用于Javascript代码,图像或其他对限制坏人非常有用的东西.