我在论坛上寻找答案,但找不到我想要的答案[1],所以我认为这也可能引起更多人的兴趣。
我的大部分工作都是在浏览器上完成的(或者说,为浏览器完成,如果你想这样说的话)。我倾向于使用 Chrome,因为它本身就包含我需要的许多最新功能(主要是 DevTools 的东西,但不仅限于此)。顺便说一句,我通常在台式机 Vaio 上运行最新版的 Chrome,该台式机配有 4GB RAM 和双核 CPU,Ubuntu 12.04 为发行版,Gnome 为窗口管理器。
所以,我很好奇:a) 为什么 Chrome 即使只打开四个选项卡中的三个也会产生这么多线程;b) 有没有办法为 Chrome 分配更多内存以防止其性能下降?
提前致谢,
纳乔
PS [1] 我发现了一些关于 Chrome 冻结或内存不足的帖子,但没有关于造成这种情况的原因或如何避免这种情况发生的帖子。
PPS 当然,我可以买一台更新、功能更强大的机器,这正是我想要评估的:这是硬件过时的问题,还是这个问题会继续出现在任何(尺寸合适但不大的)机器上?
答案1
Chrome 将浏览器的每个主要部分分成单独的进程。例如,浏览器本身是其自己的进程,每个标签是其自己的进程,每个扩展是其自己的进程。也可能有一个单独的 GPU 进程。(您可以通过访问 about:memory 查看这些详细信息)。
这样做的部分优势在于每个部分对其他部分的访问权限有限。例如,如果扩展或选项卡中存在恶意脚本,那么(理想情况下)它只能影响其自身的进程,而不会导致整个浏览器崩溃。如果某个选项卡因某种原因被冻结,则只有该选项卡(以及可能从该选项卡打开的选项卡)会被关闭,而不会导致整个浏览器崩溃。(另请参阅 about:sandbox。)
您无法预先为 Chrome 分配内存;如果 Chrome 需要更多内存,并且有可用内存,它就会占用。请注意,限制条件也可能是在 I/O 方面,因为 Chrome 必须在启动和常规使用时读取您的个人资料、偏好设置以及至少部分历史记录。Linux 和 Unix 具有一项功能,可让您将文件存储在 RAM 中,这将导致更快的访问速度(从内存读取比从硬盘读取更快,并且还可以在多次写入的情况下减少磨损),但可能会丢失数据(当您的计算机断电或关机时,RAM 的内容会丢失)。
有一个脚本叫做配置文件同步守护进程它将浏览器配置文件和缓存存储在 RAM 中,并每小时将配置文件同步回硬盘。这意味着,如果您的计算机断电或硬关机,您的配置文件和历史记录最多会保留一小时。(在正常关机时,脚本会将内容从内存同步回硬盘。)有关更多安装和这Ubuntu 中的安装页面。
请注意,Chrome(ium) 将缓存与您的配置文件分开存储,并且脚本只负责配置文件(管理缓存超出了脚本的范围)。您可能希望将缓存从当前位置移动到配置文件目录,并在旧位置添加指向新位置的符号链接。