V8(JavaScript引擎)

本页使用了标题或全文手工转换,现处于澳门繁体模式
求聞百科,共筆求聞
Google V8 JavaScript引擎
Google V8 JavaScript引擎標誌
Google V8 JavaScript引擎標誌
開發者Google
首次釋出2008年9月2日,​15年前​(2008-09-02
程式語言C++
作業系統Microsoft WindowsMac OS XLinuxFreeBSDAndroidwebOS
類型JavaScript引擎
特許條款BSD特許條款

V8是一個由Google開發的開源JavaScript引擎,用於Google ChromeChromium[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]

參考文獻

  1. Philipp Lenssen. Google on Google Chrome - comic book. Google Blogoscoped. 2008-09-01 [2008-09-01]. 
  2. Bynens, Mathias. Celebrating 10 years of V8. September 11, 2018 [2019-05-21]. 
  3. Seeley, Rich; Jack Vaughan. Google Chrome shifts architects' equations as V8 powers the browser. SOA News. 5 September 2008 [2008-09-07]. 
  4. V8 JavaScript Engine: Introduction. Google Code. Google. 
  5. 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

參見