Node V8 Engine
📌 1. 基本概念
V8 是 Google 開發的 JavaScript 引擎,最初用於 Chrome 瀏覽器,後被 Node.js 引入。以 C++ 編寫,負責將 JS 編譯成原生機器碼執行,而非直譯。Node.js 將 JS 執行邏輯交由 V8 處理,將 I/O 與系統調用交給 libuv。
📌 2. V8 的核心組件
組件 | 說明 |
---|---|
Parser / AST Generator | 將 JS 程式碼轉成抽象語法樹 |
Ignition | 解譯器,將 AST 轉成 bytecode |
TurboFan | JIT 編譯器, 最佳化 bytecode 為機器碼 |
Garbage Collector | 記憶體管理與釋放未使用物件 |
📌 3. V8 的 JIT 編譯流程
JS Code → Parse → AST → Ignition(bytecode)→ TurboFan(JIT 編譯)→ Optimized Machine Code
✅ 熱點程式碼會重複執行,V8 會優化它以提升效能。
📌 4. 記憶體管理與垃圾回收(Garbage Collection)
🧠 分代垃圾回收:
分區 | 說明 |
---|---|
New Space | 儲存短期物件,採用 Scavenge GC |
Old Space | 儲存長期存活物件,Mark-Sweep+Compact |
Large Object Space | 超大物件,獨立配置 |
Code Space | 儲存 JIT 編譯的機器碼 |
回收機制:
- Minor GC(快):清除 New Space
- Major GC(慢):清除 Old Space