【问题标题】:Web Content process still in memory after Firefox crashedFirefox 崩溃后,Web 内容进程仍在内存中
【发布时间】:2018-03-17 01:05:44
【问题描述】:

最近我一直在使用 MATE 玩 Ubuntu 16.04(已修补和升级)。在操作系统之上,安装了 Firefox 56 (FF) 用于通常的网页浏览。正如我们所知,FF有时会下降。但是我注意到在这种情况下磁盘利用率很高。原因是旧的 FF 进程没有关闭称为 Web Content 的缓存进程。

根据 Google-d 信息,默认情况下有 4 个此类进程。通过摆弄about:config,您可以修改子进程的数量。有关此检查的更多信息FF Electrolysis。我不会标记这种恶意行为,但它的不便之处永远不会减少。
我制作了一个脚本,它会在 FF 崩溃时启动并杀死这样的进程。他们运行类似这样的命令:

"/usr/lib/firefox/firefox-contentproc-childID8-isForBrowser-intPrefs5:50|6:-1|18:0|28:1000|33:20|34:10|43:128|44:10000|49:0|51:400|52:1|53:0|54:0|59:0|60:120|61:120|91:2|92:1|106:5000|117:0|119:0|130:10000|155:24|156:32768|158:0|159:0|167:5|171:1048576|172:100|173:5000|175:600|176:4|177:1|186:2|200:60000|-boolPrefs1:0|2:0|4:0|26:1|27:1|30:0|35:1|36:0|37:0|38:0|41:1|42:1|45:0|46:0|47:0|48:0|50:0|55:1|56:1|57:0|58:1|62:1|63:1|64:0|65:1|66:1|67:0|68:1|71:0|72:0|75:1|76:1|80:1|81:1|82:1|83:0|85:0|86:0|87:1|88:0|93:1|94:0|100:0|105:0|108:1|109:0|111:1|112:1|114:1|118:0|120:0|122:0|124:1|125:1|131:0|132:0|133:1|135:0|146:0|153:0|154:0|157:1|160:0|162:1|164:1|165:0|170:0|174:1|179:0|180:0|181:0|182:1|183:0|184:0|185:1|188:1|192:0|193:0|194:1|195:1|196:0|197:1|198:1|199:1|201:0|202:0|204:0|212:1|213:1|214:0|215:0|216:0|-stringPrefs3:7;release|134:3;1.0|151:332;  ¼½¾ǃː̷̸։֊׃״؉؊٪۔܁܂܃܄ᅟᅠ᜵           ​‎‏‐’․‧

‪‫‬‭‮ ‹›⁁⁄⁒ ⅓⅔⅕⅖⅗⅘⅙⅚⅛⅜⅝⅞⅟∕∶⎮╱⧶⧸⫻⫽⿰⿱⿲⿳⿴⿵⿶⿷⿸⿹⿺⿻ 。〔〕〳゠ㅤ㈝㈞㎮㎯㏆㏟꞉︔︕︿﹝﹞./。ᅠ�|152:8;moderate|-greomni/usr/lib/firefox/omni.ja-appomni/usr/lib/firefox/browser/omni.ja-appdir/usr/lib/firefox/browser1078truetab "

到目前为止我已经确定了该命令的部分内容:

  1. 对于初学者:/usr/lib/firefox/firefox -contentproc -childID"CHILD_ID" -isForBrowser
    其中"CHILD_ID" 是 FF 的子进程处理缓存的索引,我将它们设置为 0 到 9,因为我的 FF 设置默认为 4,但最大值为 10。其他参数不言自明。
  2. 然后有许多首选项 int/bool/string,看起来像是将进程传递给其他进程。我不确定如何将这些解释为人类可读的语言。
  3. 最后所有进程都以-greomni/usr/lib/firefox/omni.ja -appomni/usr/lib/firefox/browser/omni.ja -appdir/usr/lib/firefox/browser "FF_PID" true tab结束
    其中omni.ja 是一个多库存档,更多信息here。 “FF_PID”是创建此类缓存子的 FF 进程的进程 ID 号。最后两个参数true tab 我不知道。 FF 的手册页太浅,无法在这里提供帮助。
  4. 如果您想查看挂起的进程,请尝试我的接听电话:ps -ef | grep "firefox -contentproc" --color=never | awk ' { t = $1; $1 = $3; $3 = t; print; } ' | grep "^1" --color=never

所以我的推理和疑问是:

  1. 为什么 FF 崩溃报告将这些进程留在内存中?
    这个剩余的子进程是否用于标签恢复?
    如果不是,为什么?
  2. 我可以使用它来恢复崩溃前在浏览器中的文本编辑(例如,崩溃时论坛消息丢失)吗?
  3. 到目前为止,我终止了所有进程以释放磁盘使用量。有没有更好的办法 ?请告诉我。
  4. 命令中那些可笑的管道是什么?我想这是我的磁盘使用率如此之高的主要原因。寻找一些不存在的内存地址?

我的清理线路是:for ch_id in `ps -ef | grep "firefox -contentproc" --color=never | awk ' { t = $1; $1 = $3; $3 = t; print; } ' | grep "^1" --color=never | awk '{print$2}'`; do kill -9 $ch_id ; done

【问题讨论】:

  • 这里有一个可以使用的单行器pgrep firefox 输出:pgrep -fai firefox/firefox | awk '/contentproc/{for(i=6;i<=21;i++){$i="#"};print $0;next}{print $0}'

标签: linux firefox crash


【解决方案1】:

这只是关于命令行中“管道”的部分答案。这些不是管道,而是 -*Prefs 选项的 firefox 命令行参数语法的一部分。据我所知,这只是源代码中的“记录”(参见https://dxr.mozilla.org/mozilla-release/source/dom/ipc/ContentProcess.cpp)。

例如,-stringPrefs 选项指的是关于字符串的一些偏好(我不知道更多),语法如下:“index:length;string|(next entry...)”。看起来怪异的字符列表似乎与http://kb.mozillazine.org/Network.IDN.blacklist_chars 中列出的黑名单字符相对应。

当我“ps -elf | firefox”时,我得到了相同(或非常相似)的结果,并且我在互联网上的其他地方找到了对这个字符串的其他引用(但不是关于这个字符串)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-12-17
    • 1970-01-01
    • 1970-01-01
    • 2012-01-28
    • 1970-01-01
    • 2020-09-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多