V8 (JavaScript引擎)

V8是一个由Google开发的开源JavaScript引擎,用于Google ChromeChromium[3],项目以V8发动机其命名[4]。此项目由Lars Bak主导开发[5]

Google V8 JavaScript引擎
Google V8 JavaScript引擎标志
Google V8 JavaScript引擎标志
开发者Google
首次发布2008年9月2日2008-09-02
当前版本
  • 11.4 (2023年5月24日;稳定版本)[1][2]
源代码库
编程语言C++
操作系统Microsoft WindowsMac OS XLinuxFreeBSDAndroidwebOS
类型JavaScript引擎
许可协议BSD许可证
网站v8.dev/ 编辑维基数据

运作方式

V8在运行之前将JavaScript编译成了机器码,而非字节码或是解释执行它,以此提升性能。更进一步,使用了如内联缓存(inline caching)等方法来提高性能。有了这些功能,JavaScript进程与V8引擎的速度媲美二进制编译。[6]

传统的Javascript是动态语言,又可称之为Prototype-based Language,JavaScript继承方法是使用prototype,通过指定prototype属性,便可以指定要继承的目标。属性可以在运行时添加到或从对象中删除,引擎会为运行中的对象创建一个属性字典,新的属性都要通过字典查找属性在内存中的位置。V8为object添加属性的时候,就以上次的hidden class为父类别,创建新属性的hidden class的子类别,如此一来属性访问不再需要动态字典查找了。

为了缩短由垃圾回收造成的停顿,V8使用stop-the-world, generational, accurate的垃圾回收器[7]。在执行回收之时会暂时中断进程的执行,而且只处理对象堆栈。还会收集内存内所有对象的指针,可以避免内存溢出的情况。V8汇编器是基于Strongtalk汇编器[8]

参考文献

  1. . [2023年6月29日].
  2. . 2022年6月17日 [2023年6月19日].
  3. Philipp Lenssen. . Google Blogoscoped. 2008-09-01 [2008-09-01]. (原始内容存档于2015-06-18).
  4. Bynens, Mathias. . September 11, 2018 [2019-05-21]. (原始内容存档于2022-05-06).
  5. Minto, Rob. . Financial Times. 27 March 2009 [1 June 2021]. (原始内容存档于1 December 2011).需付费查阅
  6. Seeley, Rich; Jack Vaughan. . SOA News. 5 September 2008 [2008-09-07]. (原始内容存档于2010-04-27).
  7. . Google Code. Google. [17 August 2010]. (原始内容存档于2010年6月6日).
  8. . [2010-03-17]. (原始内容存档于2015-11-27).

外部链接

参见

This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.