豆皮粉儿们,又到了金三银四的求职旺季,今天这一期由字节跳动数据平台的“hmj不是黄焖鸡”,给你们分享前端面试中可能会遇到一个关于浏览器的知识点“Chrome浏览器为何是多进程而不是单进程”,该文帮你们梳理了知识点内容,让大家能更好的理解~javascript
一年之计在于春,祝正在找新工做的大家,offer拿到手软,money多多~ 下面👇就让咱们开始阅读吧。前端
本文做者:hmj不是黄焖鸡java
全部的功能模块都是运行在同一个进程里的,可能会致使浏览器不稳定、不流畅和不安全。web
单进程浏览器的功能模块运行在同一进程中,采用多线程的方式运行,若是有一个线程崩溃或者出现问题,就可能会致使整个进程崩溃。例如javascript环境是运行在页面线程中的 ,可能会由于代码的意外崩溃致使整个浏览器崩溃。面试
页面渲染、页面展示、JavaScript环境、插件等都是运行在同一个页面线程中,意味着同一时刻只能有一个任务能够执行。例如编写一个无线循环的脚本运行在单进程浏览器页面中,会独占页面线程,致使其余任务没法执行,会致使整个浏览器失去响应、卡顿。另外页面的内存泄露也是形成卡顿的一个缘由。浏览器
插件或者脚本经过浏览器获取系统权限,引起安全问题。安全
Chrome的官方文档markdown
采用多进程能够使浏览器具有更好的容错性,提供安全性和沙盒性。由于操做系统能够提供方法限制每一个进程拥有的能力,因此浏览器可让某些进程只能具有特定的功能,例如Chrome的Tab限制了对系统文件的读写能力, 可是多进程的浏览器有一个缺点,就是进程的内存占用相对更多,可是Chrome为了节省内存,会限制被启动的进程数,当进程数到达界限后,会将访问同一个网站的tab都放在一个进程里运行。网络
经过一个老生常谈的面试题简单梳理下浏览器各个进程之间的工做和流程 Chrome浏览器地址栏输入一个URL后发生了什么?多线程
在Chrome的任务管理器中咱们能够看到,Chrome已经在朝着这个方向变化,network service、storage service等都已是服务化,这样这些功能既能够放在不一样的进程里面运行也能够合并为一个独立的进程。