多進程和多線程的區別
- 多進程更耗資源。每一個進程都有獨立的資源,線程間共享資源
- 多進程更安全。線程間共享內存,進程間通訊更麻煩
- 多進程更穩定。一個進程崩潰了不一會影響其餘進程。一個線程崩潰了可能會使整個進程崩潰
爲何用多進程
速度
使用多進程就是用內存換速度,爲了加快瀏覽器tab的加載速度,chrome瀏覽器每一個tab使用一個進程,這樣即便由於某個頁面崩潰了也不會影響其餘頁面,這就是爲何firefox常常整個瀏覽器崩掉的緣由,由於它是整個瀏覽器用一個進程,每一個tab用一個線程,各類插件也都是線程chrome
可靠
每一個tab使用一個進程,一個tab的快慢或者崩潰不會影響其餘tab。而每一個tab使用一個線程,當一個tab崩潰了就會影響全部tab,尤爲是開啓了不少tab,繼續開tab會很慢。segmentfault
安全
進程間通訊更麻煩,線程間能夠共享進程的資源。若是使用多線程,當某個tab有病毒,可能會泄露其餘tab的數據瀏覽器
用多進程的缺點
1.當開啓的頁面過多,太多的進程會致使消耗不少資源
2.進程啓動比線程慢
可是如今設備內存已經不像二十年前了,不須要太計較內存大小,並且進程啓動方面也能夠優化,所以瀏覽器使用多進程已是大勢所趨
安全
chrome瀏覽器的每一個進程作了什麼
Chrome 建立三種類型的進程:瀏覽器,渲染器和插件程序markdown
- 瀏覽器:只有一個瀏覽器進程,管理標籤,窗口和 「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穩定版發佈
多線程