理解V8
V8是Google的开源高性能JavaScript和WebAssembly引擎,用C ++编写。它用于Chrome和Node.js等。
- Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境
- V8 是一个 JavaScript 引擎
- Node.js 自己并不会直接执行 JavaScript,真正负责“看懂并执行 JS 代码”的核心,就是 V8。
- V8主要负责的事情很多,比如执行JS、管理JS对象内存、垃圾回收GC等等
JavaScript 代码
↓
V8 引擎
↓
解析 JS
↓
编译 / 优化
↓
让 CPU 执行
理解V8的Heap堆
- V8 的 Heap堆可以理解为“专门放 JavaScript 对象的内存”
- V8 为了让垃圾回收更高效,会把 Heap 大致分成两类:
V8 Heap
├── 新生代 New Space
└── 老生代 Old Space
- 新生代 = 放刚创建、生命周期短的对象
- 老生代 = 放活得比较久的对象