跳到主要内容

理解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等等
text
JavaScript 代码
↓
V8 引擎
↓
解析 JS
↓
编译 / 优化
↓
让 CPU 执行

理解V8的Heap堆​

  • V8 的 Heap堆可以理解为“专门放 JavaScript 对象的内存”
  • V8 为了让垃圾回收更高效,会把 Heap 大致分成两类:
text
V8 Heap
├── 新生代 New Space
└── 老生代 Old Space
  • 新生代 = 放刚创建、生命周期短的对象
  • 老生代 = 放活得比较久的对象