本頁使用了標題或全文手工轉換

V8 (JavaScript引擎)

維基百科,自由的百科全書
跳至導覽 跳至搜尋
Google V8 JavaScript引擎
Google V8 JavaScript引擎標誌
Google V8 JavaScript引擎標誌
開發者Google
初始版本2008年9月2日,​13年前​(2008-09-02
穩定版本
9.9[1]在維基數據編輯(2022年1月31日,4個月前)
源代碼庫 編輯維基數據鏈接
編程語言C++
操作系統Microsoft WindowsMac OS XLinuxFreeBSDAndroidwebOS
類型JavaScript引擎
許可協議BSD許可證
網站v8.dev/ 編輯維基數據

V8是一個由Google開發的開源JavaScript引擎,用於Google ChromeChromium[2]Lars Bak是這個項目的組長,以V8發動機為其命名[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. ^ V8 release v9.9. 2022年1月31日 [2022年2月3日]. 
  2. ^ Philipp Lenssen. Google on Google Chrome - comic book. Google Blogoscoped. 2008-09-01 [2008-09-01]. (原始內容存檔於2015-06-18). 
  3. ^ Bynens, Mathias. Celebrating 10 years of V8. September 11, 2018 [2019-05-21]. (原始內容存檔於2022-05-06). 
  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). 

外部連結[編輯]

參見[編輯]