我目前正在尝试使用 Selenium IDE 和 Firefox 14 对 Web 应用程序运行一些测试。测试主要包括加载包含数千个链接的页面并单击每个链接。当然,每次出现弹出窗口时,我都会告诉 Selenium 关闭它并继续处理其余链接。
但是,即使我关闭了弹出窗口,Firefox 似乎也不会释放内存。通常,打开 1500 个弹出窗口后 Firefox 就会崩溃(大约占用 2.5GB 的内存)。
有什么方法可以强制浏览器释放内存吗?也许我应该在 about:config 中设置一些东西?或者 Selenium 存在缺陷?
谢谢。
答案1
尽管这是一个相当极端的用例,但 Firefox 崩溃的事实并不是什么好事。
您是否在运行干净的配置文件,即禁用所有扩展?扩展可以在每次加载页面时保留并占用内存;这是泄漏的常见原因。我相信 Firefox 15(今天发布)对存在此问题的扩展进行了全面修复,因此可能值得升级并查看问题是否仍然存在。以下是 Extremetech 关于此问题的图表:
或者,about:memory
有一个Minimize memory usage
按钮尝试释放保留但当前未使用的内存。是否可以编写脚本让 Selenium 导航到那里并按下按钮?
答案2
这个问题是由于 Firefox 的垃圾收集造成的,对此你无能为力。禁用你打开的选项卡上的 JavaScript(如果可能)可能会有所帮助,因为这样 JS 内存泄漏会更少。这些泄漏对于有缺陷的附加组件来说尤其成问题,因此我建议你在安全模式下进行测试(禁用所有扩展)或使用 Google Chrome - 由于它将每个选项卡分成一个单独的进程,因此它不会像 Firefox 那样遭受内存泄漏,但在处理大量打开的选项卡时,它的表现似乎不如 Firefox 流畅。