豆皮粉兒們,又到了金三銀四的求職旺季,今天這一期由字節跳動數據平臺的「hmj不是黃燜雞」,給你們分享前端面試中可能會遇到一個關於瀏覽器的知識點「Chrome瀏覽器爲何是多進程而不是單進程」,該文幫你們梳理了知識點內容,讓大家能更好的理解~javascript
一年之計在於春,祝正在找新工做的大家,offer拿到手軟,money多多~ 下面👇就讓咱們開始閱讀吧。前端
本文做者:hmj不是黃燜雞java
全部的功能模塊都是運行在同一個進程裏的,可能會致使瀏覽器不穩定、不流暢和不安全。web
單進程瀏覽器的功能模塊運行在同一進程中,採用多線程的方式運行,若是有一個線程崩潰或者出現問題,就可能會致使整個進程崩潰。例如javascript環境是運行在頁面線程中的 ,可能會由於代碼的意外崩潰致使整個瀏覽器崩潰。面試
頁面渲染、頁面展示、JavaScript環境、插件等都是運行在同一個頁面線程中,意味着同一時刻只能有一個任務能夠執行。例如編寫一個無線循環的腳本運行在單進程瀏覽器頁面中,會獨佔頁面線程,致使其餘任務沒法執行,會致使整個瀏覽器失去響應、卡頓。另外頁面的內存泄露也是形成卡頓的一個緣由。瀏覽器
插件或者腳本經過瀏覽器獲取系統權限,引起安全問題。安全
Chrome的官方文檔markdown
採用多進程能夠使瀏覽器具有更好的容錯性,提供安全性和沙盒性。由於操做系統能夠提供方法限制每一個進程擁有的能力,因此瀏覽器可讓某些進程只能具有特定的功能,例如Chrome的Tab限制了對系統文件的讀寫能力, 可是多進程的瀏覽器有一個缺點,就是進程的內存佔用相對更多,可是Chrome爲了節省內存,會限制被啓動的進程數,當進程數到達界限後,會將訪問同一個網站的tab都放在一個進程裏運行。網絡
經過一個老生常談的面試題簡單梳理下瀏覽器各個進程之間的工做和流程 Chrome瀏覽器地址欄輸入一個URL後發生了什麼?多線程
在Chrome的任務管理器中咱們能夠看到,Chrome已經在朝着這個方向變化,network service、storage service等都已是服務化,這樣這些功能既能夠放在不一樣的進程裏面運行也能夠合併爲一個獨立的進程。