启动像 Firefox 这样的程序会在 14.04 LTS 上启动 20 多个独立进程,从而耗尽内存

tvc*_*yck 4 firefox thunderbird ram htop 14.04

当我以正常方式启动 Firefox 并查看htop. Ubuntu 启动了超过 20 个称为 Firefox 的进程。它们都有或多或少的顺序 PID。Thunderbird 和 Spotify 也是如此。然后这些过程耗尽了我所有的记忆。

PID USER      PRI  NI  VIRT   RES   SHR S CPU% MEM%   TIME+  Command
11843 tom        20   0 1253M  345M 89968 S  6.5  9.0  1:42.50 /usr/lib/firefox/firefox http://doodle.com/
11850 tom        20   0 1253M  345M 89968 S  0.0  9.0  0:00.00 /usr/lib/firefox/firefox http://doodle.com/
11851 tom        20   0 1253M  345M 89968 S  0.0  9.0  0:01.18 /usr/lib/firefox/firefox http://doodle.com/
11852 tom        20   0 1253M  345M 89968 S  0.0  9.0  0:00.00 /usr/lib/firefox/firefox http://doodle.com/  
11853 tom        20   0 1253M  345M 89968 S  0.0  9.0  0:00.00 /usr/lib/firefox/firefox http://doodle.com/
11854 tom        21   1 1253M  345M 89968 S  1.3  9.0  0:01.86 /usr/lib/firefox/firefox http://doodle.com/
11855 tom        20   0 1253M  345M 89968 S  0.0  9.0  0:00.38 /usr/lib/firefox/firefox http://doodle.com/
11856 tom        20   0 1253M  345M 89968 S  0.0  9.0  0:00.45 /usr/lib/firefox/firefox http://doodle.com/
11857 tom        20   0 1253M  345M 89968 S  0.0  9.0  0:00.41 /usr/lib/firefox/firefox http://doodle.com/
11858 tom        20   0 1253M  345M 89968 S  0.0  9.0  0:00.38 /usr/lib/firefox/firefox http://doodle.com/
...
Run Code Online (Sandbox Code Playgroud)

例如,如果我用 evince 打开 pdf,则只会启动 4 或 5 个 evince 进程。

PID USER      PRI  NI  VIRT   RES   SHR S CPU% MEM%   TIME+  Command
12090 tom        20   0  962M 86840 39132 S  0.0  2.2  0:01.16 evince /home/tom/test.pdf
12092 tom        20   0  962M 86840 39132 S  0.0  2.2  0:00.00 evince /home/tom/test.pdf
12093 tom        20   0  962M 86840 39132 S  0.0  2.2  0:00.01 evince /home/tom/test.pdf
12095 tom        20   0  962M 86840 39132 S  0.0  2.2  0:00.00 evince /home/tom/test.pdf
12096 tom        20   0  962M 86840 39132 S  0.0  2.2  0:00.35 evince /home/tom/test.pdf
Run Code Online (Sandbox Code Playgroud)

这是正常行为吗?如果没有,我该如何解决这个问题?

小智 6

您在 htop 中看到这么多条目的原因是它向您显示的是线程而不是进程,而 Firefox 有很多。

如果您H反复按,则会在显示线程和显示进程之间切换。

所有这些 Firefox 线程共享相同的内存空间,因此您应该只计算 RES 345MB 一次,而不是为每个线程添加它。