Google V8 JavaScript引擎标志 | |
开发者 | |
---|---|
首次发布 | 2008年9月2日 |
编程语言 | C++ |
操作系统 | Microsoft Windows、Mac OS X、Linux、FreeBSD、Android、webOS |
类型 | JavaScript引擎 |
许可协议 | BSD许可证 |
V8是一个由Google开发的开源JavaScript引擎,用于Google Chrome及Chromium中[1]。Lars Bak是这个项目的组长,以V8发动机为其命名[2]。
运作方式
V8在执行之前将JavaScript编译成了机器代码,而非字节码或是解释执行它,以此提升性能。更进一步,使用了如内联缓存(inline caching)等方法来提高性能。有了这些功能,JavaScript程序与V8引擎的速度媲美二进制编译。[3]
传统的Javascript是动态语言,又可称之为Prototype-based Language,JavaScript继承方法是使用prototype,透过指定prototype属性,便可以指定要继承的目标。属性可以在运行时添加到或从对象中删除,引擎会为执行中的对象创建一个属性字典,新的属性都要透过字典查找属性在内存中的位置。V8为object新增属性的时候,就以上次的hidden class为父类别,创建新属性的hidden class的子类别,如此一来属性访问不再需要动态字典查找了。
为了缩短由垃圾回收造成的停顿,V8使用stop-the-world, generational, accurate的垃圾回收器[4]。在执行回收之时会暂时中断程序的执行,而且只处理对象堆栈。还会收集内存内所有对象的指针,可以避免内存溢出的情况。V8汇编器是基于Strongtalk汇编器[5]。
参考文献
- ↑ Philipp Lenssen. Google on Google Chrome - comic book. Google Blogoscoped. 2008-09-01 [2008-09-01].
- ↑ Bynens, Mathias. Celebrating 10 years of V8. September 11, 2018 [2019-05-21].
- ↑ Seeley, Rich; Jack Vaughan. Google Chrome shifts architects' equations as V8 powers the browser. SOA News. 5 September 2008 [2008-09-07].
- ↑ V8 JavaScript Engine: Introduction. Google Code. Google.
- ↑ v8 Licenses
外部链接
- Google Code project page
- cproxyv8及v8-juice are C++ libraries for extending v8, e.g. to assist in binding client-side C++ classes to JavaScript.
- v8cgi is a v8-based framework for serving web application written in JavaScript.
- node.js[1] is a toolkit for writing performant non-blocking event-driven network servers in JavaScript.
- Inside V8 - A Javascript Virtual Machine