Skip to content
目录

5. Chrome 集成、内存压力与嵌入 API

V8 是一个可嵌入的 JS 引擎。Chrome、Node、Deno 都是在宿主环境里创建 IsolateContext,再调用 V8 编译和执行 JS。

Chrome 里 V8 在哪

网页 JS 通常运行在 Renderer 进程 的主线程上,Worker 则在独立线程中运行。V8 负责执行 JS,DOM、网络、渲染、事件分发主要由 Blink / Chromium 其他模块负责。

常见边界:

  • V8:解析、编译、执行 JS,管理 JS 堆。
  • Blink:DOM/CSS、Web API、DOM 与 JS 对象绑定。
  • Chromium:多进程、网络、GPU、调度等。

嵌入 V8 的基本流程

典型流程可以概括为:

  1. 初始化 V8 平台。
  2. 创建 Isolate
  3. 创建 HandleScope
  4. 创建 Context
  5. 编译并执行脚本。

中重点不是 API 细节,而是理解:宿主负责“什么时候执行 JS、给 JS 暴露什么 API”,V8 负责“如何执行 JS”。

内存压力

Chrome 收到系统内存压力后,可以通知 V8。V8 可能触发 GC、降低内存占用,或者启动增量标记。

这个机制说明 V8 不是孤立运行的,它会和宿主的任务调度、内存策略配合。

调试与优化

调试器附加、单步执行、断点等场景下,V8 可能放弃部分优化代码,回到更容易观察和控制的执行路径。

这是引擎常见取舍:生产执行追求性能,调试场景优先正确性和可观测性。

总结

Chrome 通过 Blink 嵌入 V8。V8 只负责 JS 语言执行和堆管理,不负责 DOM 渲染;宿主通过 Context、回调、任务队列、内存压力通知等机制与 V8 协作。

MIT License.