有時我會收到在 chrome 或 edge 中崩潰的 Javascript 檔案(使用 Adob??e Animate 創建)。在某些情況下,這些檔案僅在 chrome 中崩潰,在某些情況下,它們僅在邊緣崩潰。它總是RangeError: "Maximum call stack size exceeded"。
這種行為具有很好的可重現性,不會隨機發生。
我通過“chrome://version/”檢查了 v8 版本,兩個瀏覽器的版本相同(V8 9.7.106.18)
我想知道這怎么可能?
uj5u.com熱心網友回復:
(這里是 V8 開發人員。)
在不了解這些應用程式在做什么的情況下,很難確定。有幾個因素在起作用:
- 堆疊的最大大小(以位元組為單位)。作業系統為此設定了一個上限,超過這個上限就會終止行程。為了避免這種情況,V8 將自己的限制設定為略低于它估計的作業系統限制。當 V8 版本相同時,我不希望在這方面有任何差異。但是我不知道 Edge 是否會以不同的限制覆寫默認值。
- 每個堆疊幀的大小。這也應該是一樣的,只要 V8 版本是一樣的。它可能會受到優化決策的影響(給定函式的優化代碼可以使用比同一函式的未優化代碼更多或更少的堆疊空間),但如果 Edge 不符合優化策略,我會感到驚訝。
- 被呼叫的函式,以及發生的任何遞回呼叫的深度。在最簡單的情況下,生成的 JS 可以檢測到它在哪個瀏覽器中運行并表現不同。也可以想象,視窗的大小會起作用,例如,如果代碼遍歷動態大小的畫布的每個像素;或已存盤在組態檔(
LocalStorage等)中的東西。如果您安裝了任何瀏覽器擴展來改變頁面正在做的事情,那也可能會影響事情。如果不了解應用程式正在/正在做什么,就不可能排除任何事情。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/408563.html
標籤:
