先来看一下维基百科的解释:
V8 是一个由 Google 开发的 JavaScript 引擎,并于 2008 年开源,用于 Google Chrome 及 Chromium 中。
V8 引擎是用 C++ 写成的,最常使用的就是在 Google Chrome 与 Edge 的开发人员工具中可以直接写 JavaScript,并直接解读其内容,Node.js 是按照 V8 引擎的规格来做开发,将 JavaScript 通过 V8 引擎可以直接编译成机器语言,被称为地表最快的编译引擎。
运作方式
V8 在执行之前将 JavaScript 编译成了机器语言,而非位元组语言或是解释执行它,以此提升效率。更进一步,使用了如内联缓存(inline caching)等方法来提高效率。有了这些功能,JavaScript 程序与 V8 引擎的速度媲美二进制编译。
传统的 Javascript 是动态语言,又可称之为 Prototype-based Language,JavaScript 继承方法是使用 prototype,通过指定 prototype 属性,便可以指定要继承的目标。属性可以在执行时添加到或从对象中删除,引擎会为执行中的对象建立一个属性字典,新的属性都要通过字典寻找属性在内存中的位置。V8 为 object 新增属性的时候,就以上次的 hidden class 为父类别别,建立新属性的 hidden class 的子类别,如此一来属性存取不再需要动态字典寻找了。
为了缩短由垃圾回收造成的停顿,V8 使用 stop-the-world, generational, accurate 的垃圾回收器。在执行回收之时会暂时中断程序的执行,而且只处理对象堆叠。还会收集内存内所有对象的指标,可以避免内存溢出的情况。
参考资料
本文转载自:hsuchihting,版权归原作者所有,本博客仅以学习目的的传播渠道,不作版权和内容观点阐述,转载时根据场景需要有所改动。
最新评论