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

你好,我是李兵。 上节我们介绍了V8使用副垃圾回收器和主垃圾回收器来处理垃圾回收,这节课我们看看V8是如何优化垃圾回收器的执行效率的。 由于JavaScript是运行在主线程之上的,因此,一旦执行垃圾回收算法,都需要将正在执行的JavaScript脚...

图解 Google V8

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

你好,我是李兵。 我们都知道,JavaScript是一门自动垃圾回收的语言,也就是说,我们不需要去手动回收垃圾数据,这一切都交给V8的垃圾回收器来完成。V8为了更高效地回收垃圾,引入了两个垃圾回收器,它们分别针对着不同的场景。 那这两个回收器究竟是如...

图解 Google V8

19、异步编程(二):V8是如何实现async、await的

你好,我是李兵。 上一节我们介绍了JavaScript是基于单线程设计的,最终造成了JavaScript中出现大量回调的场景。当JavaScript中有大量的异步操作时,会降低代码的可读性, 其中最容易造成的就是回调地狱的问题。 JavaScript...

图解 Google V8

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

你好,我是李兵。 上节我们介绍了通用的UI线程架构,每个UI线程都拥有一个消息队列,所有的待执行的事件都会被添加进消息队列中,UI线程会按照一定规则,循环地取出消息队列中的事件,并执行事件。而JavaScript最初也是运行在UI线程中的。换句话说,...

图解 Google V8

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

你好,我是李兵。 我们在使用JavaScript时,经常要用到大量的回调函数,比如在浏览器中可以使用setTimeout来设置定时器,使用XMLHTTPRequest来异步下载资源文件,在Node中可以使用readFile来读取文件,这些操作都有一个...

图解 Google V8

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

你好,我是李兵。 上节我们留了个思考题,提到了一段代码是这样的: 123456789function loadX(o) { return o.x}var o = { x: 1,y:3}var o1 = ...

图解 Google V8