每次我在Mac上的Chrome中加载浏览器代码时,该应用程序都会分叉另一个进程。这似乎与firefox或Safari的工作方式不同。谷歌在这种情况下远离多线程的原因是什么?这里要解决的问题(一次渲染多个页面在我看来似乎是多线程的主要候选者,或者?
答案 0 :(得分:11)
在单独的流程中运行每个页面(或标签页),Chrome可以提供更高的安全性,防止页面呈现错误,以及在进程中运行的浏览器插件。基本上,如果一个页面崩溃,它不会影响其他选项卡。相反,你会得到一个“Aw Snap!”消息。
来自docs:
我们对浏览器标签使用单独的流程来保护整体 应用程序从渲染引擎中的错误和故障。我们也 限制从每个渲染引擎进程访问其他人和 系统的其余部分。在某些方面,这带来了网页浏览 内存保护和访问控制带来的好处 操作系统。