0

hello-world为例。我有几个问题:

  1. 做什么v8::Isolate?它是否创建一个新线程
  2. 做什么v8::Isolate::Scope
  3. 做什么v8::HandleScope
  4. 做什么v8::Local<v8::Context>
  5. 做什么v8::Script::Compile ?是直接把js代码编译成机器码吗?

感谢您的帮助!

4

1 回答 1

1

官方维基

  • 隔离是具有自己的堆的 VM 实例。
  • 本地句柄是指向对象的指针。所有 V8 对象都使用句柄​​访问,由于 V8 垃圾收集器的工作方式,它们是必要的。
  • 句柄作用域可以被认为是任意数量句柄的容器。完成句柄后,无需单独删除每个句柄,您只需删除它们的范围即可。
  • 上下文是一个执行环境,它允许单独的、不相关的 JavaScript 代码在 V8 的单个实例中运行。您必须明确指定希望运行任何 JavaScript 代码的上下文。

这些概念在Embedder's Guide中有更详细的讨论。

阅读现有文档后,如果仍有不清楚的地方,请提出更具体的问题。

关于(5):在当前版本的 V8 中,v8::Script::Compile为 V8 的解释器编译字节码。在早期版本中,它编译未优化的机器代码。不同之处在于您无需担心的内部实现细节:-)

于 2018-04-04T01:25:55.067 回答