图解 Google V8

图解 Google V8 / 一门课搞懂 JavaScript 执行逻辑

李兵 前盛大创新院高级研究员
  • 课程目录
  • 课程介绍
  • 在线阅读:开篇词 | 如何学习谷歌高性能 JavaScript 引擎V8?

    V8之所以拥有如此庞大的生态圈,也和它许多革命性的设计是分不开的。

  • 01 | V8是如何执行一段JavaScript代码的?

    V8,目前用在Chrome浏览器和Node.js中,其核心功能是执行易于人类理解的JavaScript代码。

  • 02 | 函数即对象:一篇文章彻底搞懂JavaScript的函数特点

    JavaScript中的函数非常灵活,既可以被调用,还可以作为变量、参数和返回值。

  • 03 | 快属性和慢属性:V8是怎样提升对象属性访问速度的?

    为了提升查找效率,V8在对象中添加了两个隐藏属性,排序属性和常规属性。

  • 04 | 函数表达式:涉及大量概念,函数表达式到底该怎么学?

    函数声明和变量声明类似,V8在编译阶段,都会对其执行变量提升的操作,将它们提升到作用域中。

  • 05|原型链:V8是如何实现对象继承的?

    JavaScript仅仅在对象中引入了一个原型的属性,就实现了语言的继承机制,省去了很多基于类时的繁文缛节,简洁而优美。

  • 06|作用域链:V8是如何查找变量的?

    JavaScript所采用的作用域机制就是词法作用域,作用域链的路径就是按照词法作用域来实现的。

  • 07|类型转换:V8是怎么实现1+“2”的?

    在JavaScript中,类型系统是依据ECMAScript标准来实现的,V8会严格根据ECMAScript标准来执行。

  • 08|答疑:如何构建和使用V8的调试工具d8?

    d8是非常有用的调试工具,帮助我们发现代码是否可以被V8高效地执行。

  • 09 | 运行时环境:运行JavaScript代码的基石

    在执行JavaScript代码之前,V8就已经准备好了代码的运行时环境。

  • 10 | 机器代码:二进制机器码究竟是如何被CPU执行的?

    CPU执行机器代码的逻辑非常简单,首先编译之后的二进制代码被加载进内存,然后CPU就按照指令的顺序,一行一行地执行。

  • 11 | 堆和栈:函数调用是如何影响到内存布局的?

    我们使用栈这种数据结构来管理函数的调用过程,把管理函数调用过程的栈结构称之为调用栈。

  • 12 | 延迟解析:V8是如何实现闭包的?

    利用惰性解析可以加速JavaScript代码的启动速度,如果要将所有的代码一次性解析编译完成,会大大增加用户的等待时间。

  • 13 | 字节码(一):V8为什么又重新引入字节码?

    在早期,V8团队采取了非常激进的策略,直接将JavaScript代码编译成机器代码。

  • 14|字节码(二):解释器是如何解释执行字节码的?

    AST和作用域信息被输入到Ignition 解释器中,并将其转化为字节码,再由Ignition解释器来解释执行。

  • 15 | 隐藏类:如何在内存中快速查找对象属性?

    为了加速查找对象属性的速度,V8在背后为每个对象提供了一个隐藏类,隐藏类描述了该对象的具体形状。

  • 16 | 答疑: V8是怎么通过内联缓存来提升函数执行效率的?

    内联缓存会监听每个函数的执行过程,并在一些关键的地方埋下监听点。

  • 17 | 消息队列:V8是怎么实现回调函数的?

    回调函数有两种类型:同步回调和异步回调,同步回调函数是在执行函数内部被执行的,而异步回调函数是在执行函数外部被执行的。

  • 18 | 异步编程(一):V8是如何实现微任务的?

    微任务其实是一个需要异步执行的函数,执行时机是在主函数执行结束之后、当前宏任务结束之前。

  • 19|异步编程(二):V8是如何实现async/await的?

    使用async/await,可以实现以同步的方式编写异步代码这一目标。

  • 20 | 垃圾回收(一):V8的两个垃圾回收器是如何工作的?

    V8为了更高效地回收垃圾,引入了两个垃圾回收器,它们分别针对不同的场景。

  • 21 | 垃圾回收(二):V8是如何优化垃圾回收器执行效率的?

    为了解决全停顿而造成的用户体验的问题,V8团经过了很多年的努力,向现有的垃圾回收器添加了并行、并发和增量等垃圾回收技术。

  • 22|答疑:几种常见内存问题的解决策略

    通常有三种内存问题:内存泄漏(Memory leak)、内存膨胀(Memory bloat)、频繁垃圾回收。

  • 结束语 | 我的前端学习踩坑史

    这世界上最值钱的就是我们的专注力和时间,花三年干成一件事和花十年干成一件事的代价是不一样的。

  • 结课测试 | 这些V8的知识你都掌握了吗?

    《图解Google V8》结课了,来做一下测试吧!

25讲

你将获得

  • V8 执行 JavaScript 代码的完整流程;
  • JavaScript 的核心特性;
  • 事件循环和垃圾回收的工作机制;
  • 系统优化 JavaScript 执行效率的方法。

讲师介绍


课程介绍

因此,我们邀请了李兵,带来第二季课程《图解 Google V8》。在这个课程中,他将完整地梳理V8的核心知识体系,通过大量图片演示,深入浅出地讲解 V8 执行 JavaScript 代码的底层机制和原理。

通过学习这门课程,你不仅可以了解完整的 V8 编译流水线,还能通过对 V8 工作机制的学习,搞懂JavaScript语言的核心特性,进而从根源解决程序上的问题,加快 JavaScript 的执行速度。

V8知识图谱

模块介绍

本课程包括三个模块,分别是 JavaScript 设计思想篇、V8 编译流水线篇、事件循环和垃圾回收篇。

JavaScript 设计思想篇,关注 JavaScript 的设计思想,讨论它背后的核心特性,以及V8是是怎么实现这些特性的。

V8 编译流水线篇,带你分析 V8 的编译流水线所涉及到的具体知识点,同时也会穿插讲解一些内存分配相关的内容,因为函数调用、变量声明、参数传递或者函数返回数值都涉及到了内存分配。

事件循环和垃圾回收篇,深入到 V8 的心脏事件循环系统中,学习 V8 是如何实现JavaScript 单线程执行的。同时,关注垃圾回收问题,打通 V8 分配内存和回收数据的整个链路,掌握系统排查问题的方法。


课程目录


特别放送

免费领取福利


限时活动推荐


订阅须知

随机推荐

六养源药食同源好不好,值得购买吗?使用感受大揭秘!

秋田满满婴幼儿调味品可靠性如何?测评大揭秘分享?

ZMIQB818实际效果怎样?评测报告来告诉你?

创维55A3D评测性价比高吗?功能评测结果!

康夫F9用户口碑怎么样?使用感受!

康夫F9物有所值吗?小白买前必看评测?