一,首先使用快捷键Shift+Esc打开浏览器Chrome任务管理器,看到如下图界面:
可以看到浏览器默认有三个进程:
1,浏览器主进程(Browser进程)
浏览器主进程只有一个,作用有:
- 负责浏览器界面显示,用户交互(前进、后退,关闭等)
- 负责各个页面的管理,如创建和销毁其它进程
- 将Render进程中得到的内存中的bitmap,绘制到用户界面上
- 网络资源的管理,如下载
2,GPU进程
用于3d绘制等,如为dom元素添加css3样式-webkit-transform:translateZ(0),将使浏览器的渲染从cup转向gpu,开启gpu加速。
3,浏览器渲染进程(Render进程)
也被称为浏览器内核。
浏览器渲染进程的主要作用是页面渲染、脚本执行、事件处理等。
每一个标签页的打开都会创建一个浏览器渲染进程,默认打开的标签页根据域名划分在不同的进程中,不同域名之间的进程互不影响。
二,Browser进程,Render进程,GPU进程三者是如何协作的呢?
下面是一张关系图:
可以看到用户打开一个页面,首先控制的还是Browser主进程,然后我们再看一下chromium多线程模型:
基本工作方式如下:
Browser进程收到用户的请求,首先由UI线程处理,而且将相应的任务转给IO线程,他随机将该任务传递给Render进程;
Render进程的IO线程经过简单解释后交给渲染线程,渲染线程接收请求,加载网页并渲染网页,这其中可能需要Browser进程获取资源和需要GPU进程来帮助渲染,最后Render进程将结果由IO线程传递给Browser进程;
Browser进程接收到结果并将结果绘制出来;
三,浏览器渲染进程(Render进程)有哪些线程?
- GUI渲染线程
负责浏览器界面渲染,解析HTML和CSS,构建Dom树和RenderObject树,布局、绘制等。
如果用户的操作引发了回流(reflow),或者界面发生重绘(repaint)时都会启动该线程。
- JS引擎线程
也称为JS内核,主要负责JS脚本的解析执行,如Chrome的V8引擎。
JS引擎一直等待着任务队列中任务的到来,然后加以处理,一个Render进程中无论什么时候都只有一个JS引擎线程。
需要注意:GUI渲染线程和JS引擎线程是互斥的,如果JS脚本执行时间过长就会造成页面的渲染不连贯。
- 事件触发线程
当JS引擎执行代码块如点击事件document.onclick=function(){}或者$.ajax({})或者setTimeout(function(){},1000)等等代码块时,会将对应的任务添加到事件线程中,当符合条件的任务被触发时,事件触发线程会将该任务添加到待处理任务队列的末尾,等待JS引擎的处理。
- 定时触发器线程
setInterval和setTimeout所在线程。
计时完毕后,添加到事件队列中,等待JS引擎的处理。
- 异步http请求线程
在异步http请求触发后,浏览器会新打开一个线程请求。
该线程检测到状态变更时,如果设置有回调函数,异步线程就会产生事件变更,就会将该回调函数添加到事件队列,等待JS引起的处理。
四,JS为什么是单线程?
众所周知进程之间相互隔离互补影响,线程之间资源共享相互影响,试想一下如果JS是多线程,假如有thread1和thread2两个线程同时操作同一个Dom元素,thread1删除该Dom元素,thread2修改该Dom元素,同时下达两个矛盾任务让浏览器怎么执行呢,这就是为什么JS被设计成单线程。
参考链接:https://blog.csdn.net/it_rod/article/details/79880745
相关推荐
详解主流浏览器多进程架构:Chrome、IE
1、浏览器进程接收到用户输入的URL请求,浏览器进程便将URL转发给网络进程。 2、网络进程中发起真正的URL请求。 3、网络进程接收到响应头数据,便解析响应头数据,并将数据转发给浏览器进程。 4、浏览器进程接收到...
该进程浏览器除了任务管理器的功能外,能方便地在任意时刻进行进程和线程进行快照,获得他们的句柄。另外,可以从进程快照中获得各进程和线程的关系图谱。
进程: 对于操作系统来说,一个任务就是一个进程(Process),比如打开一个浏览器就是启动一个浏览器进程,打开一个记事本就启动了一个记事本进程,打开两个记事本就启动了两个记事本进程,打开一个Word就启动了一...
微软出品的进程浏览器 能详细看到进程 线程信息 与资源分布 CPU 内存 堆栈等等 比自带的任务管理器强大百倍
单进程浏览器 可以方便你用WPE、CE等截取封包数据 方便有快捷
对于操作系统来说,一个任务就是一个进程(Process),比如打开一个浏览器就是启动 一个浏览器进程,打开记 事本就启动了一个记事本进程,打开两个记事本就启动了两个记事本进程,打开 一个 Word 就启动了一个 Word ...
phantomjs.exe,chromedriver.exe文件改个名字 填上绝对路径 就可以打开多个浏览器对象 .包含 phantomjs.exe,chromedriver.exe 和示例
糖果浏览器是一款“永不崩溃”的浏览器,全球首款多进程多线程架构浏览器,糖果浏览器3。0 将使用户彻底摆脱浏览器假死或真死(崩溃)的困扰。糖果浏览器3。0实现了以下目标: 1 行云流水,操作流畅,决不出现鼠标...
可以浏览您的电脑现在正在运行的进程和线程
浏览器就是一个很好的多线程的例子,在浏览器中你可以在下载JAVA小应用程序或图象的同时滚动页面,在访问新页面时,播放动画和声音,打印文件等。 多线程的好处在于可以提高CPU的利用率——任何一个程序员都不希望...
浏览器就是一个很好的多线程的例子,在浏览器中你可以在下载JAVA小应用程序或图象的同时滚动页面,在访问新页面时,播放动画和声音,打印文件等。 多线程的好处在于可以提高CPU的利用率——任何一个程序员都不希望...
多进程多线程架构浏览器,全面防假死和程序奔溃,网页加载达到极速。 2、个性皮肤 提供大量个性皮肤,可在工具菜单对皮肤进行管理,也可到官网下载更多皮肤。 3、鼠标手势 增强了浏览网页的便捷性,鼠标右键...
这个远程进程浏览器可以显示所有运行的进程的细节,例如:进程文件名称, 文件的绝对路径, PID(进程标识符),占用的内存,占用的CPU时间, 进程的句柄,父进程的进程标识符,用户的会话ID, 线程的数量以及进程的优先级....
Procexp,即process explorer,进程浏览器。用来查看计算机上运行的进程的状态。(CPU、内存、句柄、加载dll、线程及堆栈等)
该款软件是正常进程线程启动,有别于本站点先发的一款光速浏览器,光速浏览器是多线程,为了提高速度,而致使兼容性降低,当前这款浏览器做好优化后,稍逊于光速浏览器的速度,但是比较稳定 需要.net4.0环境 并且把...
浏览器是多进程的,浏览器每一个 tab 标签都代表一个独立的进程(也不一定,因为多个空白 tab 标签会合并成一个进程),浏览器内核(浏览器渲染进程)属于浏览器多进程中的一种。 浏览器内核有多种线程在工作。 GUI ...
浏览器之进程与线程 进步的基本概念 程序的一次执行,它占用一个唯一的内存空间。是操作系统执行的基本单元。启动一个程序的时候,操作系统会为该程序创建一块内存,存储代码,运行中的数据和一个执行任务的主线程,...
一.多线程的概念 Windows是一个多任务的系统,如果你使用的是windows...浏览器就是一个很好的多线程的例子,在浏览器中你可以在下载JAVA小应用程序或图象的同时滚动页面,在访问新页面时,播放动画和声音,打印文件等。
3.1 认识线程 在操作系统中,一个任务对应一个进程,例如浏览网页启动一个浏览器进程,听音乐启动一个音乐进程等等,在进程中同样包含多个子任务,多个子任务间同时执行,例如音乐进程,一边有声音的播放,还有字幕...