chrome+执行js填表_V8系统解读(一): V8 在 Chrome 中的位置&编译调试V8

前言

这是一套关于 Chrome 中的 JS 引擎 V8 的文章系列。谈到 V8 ,估计大部分人会一种畏惧感,首先映入脑海的便是天花乱坠的 C++ 源码,但其实就算你掌握了 C++,也很难读懂源码,读懂里面的源码,并不是语言的问题,而是一个工程复杂度的问题。而且,我认为把 V8 里面的源码全部读懂并不是一个明智的做法,一个是工程量过于庞大,很容易失去耐心,另一方面代码的封装度非常高,导致很多抽象的代码,理解难度大。你想啊,几百个顶尖的工程师开发了十几年的东西,会让你轻易就把源码啃下来吗?

所以,我认为对于这种复杂的引擎来说,首先去看的不是具体的实现代码,而是顶层的设计思想和关键的技术手段。这样,如果对一部分特别感兴趣,也能找到一个切入的点去源码中验证,或者拿到更多的细节。

那还有一个问题,为什么要学习 V8,学习它有什么用?

很遗憾地告诉你,从功利的角度说,对你更好、更快地完成业务,并没什么用。如果说真的有用,可能面试的时候会有一点帮助,但更重要的是,作为一个追求极致的前端来说,这是一项基本功。基本功的重要性不言而喻,如果不知道引擎的实现思路,如何写出高质量高性能的 JS 代码简直是天方夜谭。

基于这样的出发点,我开始了这个系列的分享。主要分为两条主线,一个是 V8 的编译执行流程,这会逼着你去补充计算机底层架构相关的知识,另一个是在性能优化方面 V8 采取了哪些具体的手段,根据这些手段你就知道如何合适的组织 JS 代码去触发这些优化,达到极致的性能。下面是本系列的思维导图:

fe19a4a401e7bebfc8da9c7e94cbceaa.png

今天是第一篇,来分享一下 V8 在宏观上所处的位置(针对 Chorme 环境)。

Chrome 的多进程架构

早期的 Chrome 是单进程的,渲染、插件和网络等功能都是通过里面的线程来完成,这样大家都是共享一份内存的数据,不需要进程间通信,确实比较方便,但是一旦其中有一个线程出现问题,那个整个浏览器就会直接崩溃。为了解决这个问题,C

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值