多进程和多线程的区别
- 多进程更耗资源。每个进程都有独立的资源,线程间共享资源
- 多进程更安全。线程间共享内存,进程间通信更麻烦
- 多进程更稳定。一个进程崩溃了不一会影响其他进程。一个线程崩溃了可能会使整个进程崩溃
为什么用多进程
速度
使用多进程就是用内存换速度,为了加快浏览器tab的加载速度,chrome浏览器每个tab使用一个进程,这样即使因为某个页面崩溃了也不会影响其他页面,这就是为什么firefox经常整个浏览器崩掉的原因,因为它是整个浏览器用一个进程,每个tab用一个线程,各种插件也都是线程
可靠
每个tab使用一个进程,一个tab的快慢或者崩溃不会影响其他tab。而每个tab使用一个线程,当一个tab崩溃了就会影响所有tab,尤其是开启了很多tab,继续开tab会很慢。
安全
进程间通信更麻烦,线程间可以共享进程的资源。如果使用多线程,当某个tab有病毒,可能会泄露其他tab的数据
用多进程的缺点
1.当开启的页面过多,太多的进程会导致消耗很多资源
2.进程启动比线程慢
但是现在设备内存已经不像二十年前了,不需要太计较内存大小,而且进程启动方面也可以优化,因此浏览器使用多进程已经是大势所趋
chrome浏览器的每个进程做了什么
Chrome 创建三种类型的进程:浏览器,渲染器和插件程序
- 浏览器:只有一个浏览器进程,管理标签,窗口和 “Chrome”,也处理磁盘,网络,显示的交互,但不会去解析和渲染任何网页内容
- 渲染器:渲染器进程由浏览器进程创建,每个渲染器进程响应一个网页。包括HTML,JavaScript,CSS,images等复杂的逻辑。使用 WebKit渲染引擎。每个渲染进程都在沙盒中,通过浏览器进程访问磁盘,网络,显示器。如果渲染器有异常,浏览器进程监视器可以杀掉
- 插件程序:每种插件由浏览器进程创建一个进程,例如 Flash,Quicktime,Adobe Reader.包含插件程序本身和一些胶水代码来与浏览器和渲染器进行交互
chrome特点
- 开很多进程电脑会变慢,所以渲染器进程限制在30个,如果超个限制,新的标签会重复使用已存在的渲染器进程。因此,可能一个渲染器进程被多个网址使用。
- 没有在进程中放置跨站点的帧,也没有为所有类型的跨站点导航交换标签的渲染器进程。目前,只是通过浏览器的“Chrome”为导航交换标签的进程。
- 每个插件程序,Chrome会在第一个网页使用时创建插件进程,在所有使用该插件的网页都关闭后销毁插件进程。
firefox在54版本之后也支持了多进程。
参考
【1】为什么chrome采用多进程方式?
【2】Chrome 为什么使用多进程,即每个站点用一个进程
【3】为什么浏览器采用多进程模型
【4】Chrome 为什么多进程而不是多线程?
【5】[下载]多进程终于到来:Firefox 54.0稳定版发布