瀏覽器的執行緒和進程
- 2019 年 12 月 27 日
- 筆記
執行緒 VS 進程
多執行緒可以並行處理任務,但是執行緒是不能單獨存在的,它是由進程來啟動和管理的 一個進程就是一個程式的運行實例。詳細解釋就是,啟動一個程式的時候,作業系統會為該程式創建一塊記憶體,用來存放程式碼、運行中的數據和一個執行任務的主執行緒,我們把這樣的一個運行環境叫進程。

單執行緒與多執行緒的進程對比圖
執行緒是依附於進程的,而進程中使用多執行緒並行處理能提升運算效率。
總結來說,進程和執行緒之間的關係有以下 4 個特點。
- 進程中的任意一執行緒執行出錯,都會導致整個進程的崩潰。
- 執行緒之間共享進程中的數據。
- 當一個進程關閉之後,作業系統會回收進程所佔用的記憶體。
- 進程之間的內容相互隔離。
僅僅打開了 1 個頁面,為什麼有 4 個進程?
因為打開 1 個頁面至少需要 1 個網路進程、1 個瀏覽器進程、1 個 GPU 進程以及 1 個渲染進程,共 4 個;如果打開的頁面有運行插件的話,還需要再加上 1 個插件進程。
不過凡事都有兩面性,雖然多進程模型提升了瀏覽器的穩定性、流暢性和安全性,但同樣不可避免地帶來了一些問題:
- 更高的資源佔用。因為每個進程都會包含公共基礎結構的副本(如 JavaScript 運行環境),這就意味著瀏覽器會消耗更多的記憶體資源。
- 更複雜的體系架構。瀏覽器各模組之間耦合性高、擴展性差等問題,會導致現在的架構已經很難適應新的需求了。
參考資料:極客時間《瀏覽器工作原理與實踐》,01 | Chrome架構:僅僅打開了1個頁面,為什麼有4個進程?https://time.geekbang.org/column/article/113513
本文代表個人觀點,內容僅供參考。若有不恰當之處,望不吝賜教!
本文鏈接:https://zhangbing.site/2019/08/25/瀏覽器的執行緒和進程/。