术语:V8 引擎
定义
V8 是 Google 开发的开源 JavaScript 引擎,使用 C++ 编写,用于 Chrome 浏览器和 Node.js。它将 JavaScript 代码直接编译为机器码执行,而非使用解释器,这使得 V8 具有极高的执行性能。
核心特性
| 特性 | 说明 |
|---|---|
| JIT 编译 | 即时编译,将热点代码编译为机器码 |
| TurboFan | 优化编译器,针对热点函数进行深度优化 |
| Ignition | 解释器,快速启动并收集类型信息 |
| Orinoco | 垃圾回收器,负责内存管理 |
工作原理
flowchart LR JS[JavaScript 代码] -->|解析| AST[抽象语法树] AST -->|Ignition| Bytecode[字节码] Bytecode -->|执行| Interpreter[解释器] Bytecode -->|热点检测| TurboFan[优化编译器] TurboFan -->|生成| MachineCode[机器码]
内存管理
V8 使用分代垃圾回收:
- 新生代:存放短生命周期对象,使用 Scavenge 算法
- 老生代:存放长期存活对象,使用 Mark-Sweep 和 Mark-Compact 算法