堆棧追蹤論V8引擎工做原理

首先,請看圖 javascript

1567131860219_10_24_18__08_30_2019.jpg
根據上圖 2:9(throw) 6:3(hello) 9:1(world) 能夠看出堆棧是根據執行函數的位置進行追蹤

那麼當運行一個js函數時v8引擎是如何進行工做的呢?java

v8引擎由兩個主要模塊組成:內存堆/調用堆棧node

內存堆用於分配內存地址 調用堆棧用於執行代碼編程

調用棧是一個盒子,當執行一個函數時,它會將函數放置到棧頂!函數返回時則彈出 瀏覽器

1567133549003_10_52_26__08_30_2019.jpg

咱們都知道javascript是單線程編程語言,這意味着它只有一個調用堆棧編程語言

當執行如下代碼時函數

1567134310941_11_01_53__08_30_2019.jpg

這個時候調用堆棧怎麼了?ui

1567134363314_11_06_01__08_30_2019.jpg

當調用堆棧中有一個函數須要花費大量時間處理時,瀏覽器或node不能作任何事情,由於它被阻塞了 瀏覽器通常會詢問你是否想關掉頁面或者等待函數執行完成, 咱們能夠在不阻塞ui和不使瀏覽器失去響應的狀況下執行大量代碼嗎?線程

你猜cdn

相關文章
相關標籤/搜索