V8 (JavaScript引擎)

维基百科,自由的百科全书
跳转到导航 跳转到搜索
Google V8 JavaScript引擎
File:V8 JavaScript engine logo 2.svg
Google V8 JavaScript引擎标志
开发者Google
首次发布2008年9月2日,​17年前​(2008-09-02
当前版本
    Module:EditAtWikidata第29行Lua错误:attempt to index field 'wikibase' (a nil value)
    原始码库
    • {{URL|example.com|可选的显示文本}}
    Module:EditAtWikidata第29行Lua错误:attempt to index field 'wikibase' (a nil value)
    编程语言C++
    引擎
      Module:EditAtWikidata第29行Lua错误:attempt to index field 'wikibase' (a nil value)
      操作系统Microsoft WindowsMac OS XLinuxFreeBSDAndroidwebOS
      类型JavaScript引擎
      许可协议BSD许可证

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

      运作方式[编辑]

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

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

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

      参考文献[编辑]

      1. ^ Philipp Lenssen. Google on Google Chrome - comic book. Google Blogoscoped. 2008-09-01 [2008-09-01]. (原始内容存档于2015-06-18). 
      2. ^ Bynens, Mathias. Celebrating 10 years of V8. September 11, 2018 [2019-05-21]. (原始内容存档于2022-05-06). 
      3. ^ Minto, Rob. The genius behind Google's web browser. Financial Times. 27 March 2009 [1 June 2021]. (原始内容存档于1 December 2011). 需付费查阅
      4. ^ Seeley, Rich; Jack Vaughan. Google Chrome shifts architects' equations as V8 powers the browser. SOA News. 5 September 2008 [2008-09-07]. (原始内容存档于2010-04-27). 
      5. ^ V8 JavaScript Engine: Introduction. Google Code. Google. [17 August 2010]. (原始内容存档于2010年6月6日). 
      6. ^ v8 Licenses. [2010-03-17]. (原始内容存档于2015-11-27). 

      外部链接[编辑]

      参见[编辑]