跳去內容

V8 (JavaScript引擎)

出自維基百科,自由嘅百科全書
MultipleRocketLauncher討論貢獻喺2022年4月14號 (四) 16:44嘅修訂。
Google V8 JavaScript引擎
Google V8 JavaScript引擎標誌
Google V8 JavaScript引擎標誌
開發者Google
初始版本2008年9月2號,16年之前 (2008-09-02)
最新發布Template:LSR/wikidata
程式語言C++
作業系統Microsoft WindowsMac OS XLinuxFreeBSDAndroidwebOS
軟件類別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]。喺執行回收嗰陣會暫時停止程式,而且淨係處理物件堆疊。仲會收集RAM入面所有物件嘅指標,可以避免RAM爆煲嘅情況。V8組譯器係基於Strongtalk組譯器[5]

參考

  1. Philipp Lenssen (2008-09-01). "Google on Google Chrome - comic book". Google Blogoscoped. 原著喺2015-06-18歸檔. 喺2008-09-01搵到. {{cite web}}: Unknown parameter |dead-url= ignored (|url-status= suggested) (help)
  2. Bynens, Mathias (September 11, 2018). "Celebrating 10 years of V8". 喺2019-05-21搵到.
  3. Seeley, Rich; Jack Vaughan (5 September 2008). "Google Chrome shifts architects' equations as V8 powers the browser". SOA News. 喺2008-09-07搵到.
  4. "V8 JavaScript Engine: Introduction". Google Code. Google. 原著喺2010年6月6日歸檔. 喺17 August 2010搵到. {{cite web}}: Unknown parameter |deadurl= ignored (|url-status= suggested) (help)
  5. v8 Licenses

出面網站