我正在阅读有关Chrome的googlebooks,他们会在每次创建新标签时讨论为什么他们决定启动进程来托管浏览器标签。 所以
2个标签= 2个镀铬过程
3个标签= 3个镀铬处理等等......对吧?
但我打开了大约20个左右的标签,但在任务管理器中,我只能找到3个镀铬过程..
发生了什么事?
我被教导过,就所需资源而言,创建流程是一项昂贵的建议,并且还有其他轻量级选项(例如.net中的app域)。 那么铬采取一些混合方法??创建几个进程,然后开始在这些有限的进程集中托管其他选项卡?
答案 0 :(得分:5)
它是在第一个进程中托管的。打开铬。你会看到2个进程(经理和初始标签)。然后再打开10个标签,你会发现第二个进程的内存跳了很多。然后在第一个标签中键入google.com或其他内容,您将看到生成的新流程。
另请注意,如果您执行shift + esc并使用chrome完成任务管理器,则所有这些选项卡将组合在一起,一个是内存,其他没有。
答案 1 :(得分:2)
不要忘记,如果两个站点共享一个会话,他们共享一个进程。因此,来自一个打开新页面的站点的链接将位于同一会话中(因此也是相同的过程)。
对于使用 Ctrl + T 创建的每个标签,您应该获得一个新过程。
答案 2 :(得分:1)
我还注意到浏览同一个域的标签在同一个过程中分组。因此,如果您有3个选项卡浏览stackoverflow.com,那么这三个选项卡将作为一个进程进行appread
答案 3 :(得分:0)
与线程创建相比,进程创建相对昂贵。但Chrome中流程创建的频率非常慢,因此真正的问题是与其他技术相比的资源开销量。
Google小组认为,单独流程模型的好处证明了资源成本的合理性。鉴于桌面计算机上的当前资源,这种权衡很有意义。