以hello-world为例。我有几个问题:
- 做什么
v8::Isolate
?它是否创建一个新线程 - 做什么
v8::Isolate::Scope
? - 做什么
v8::HandleScope
? - 做什么
v8::Local<v8::Context>
? - 做什么
v8::Script::Compile
?是直接把js代码编译成机器码吗?
感谢您的帮助!
以hello-world为例。我有几个问题:
v8::Isolate
?它是否创建一个新线程v8::Isolate::Scope
?v8::HandleScope
?v8::Local<v8::Context>
?v8::Script::Compile
?是直接把js代码编译成机器码吗?感谢您的帮助!
见官方维基:
- 隔离是具有自己的堆的 VM 实例。
- 本地句柄是指向对象的指针。所有 V8 对象都使用句柄访问,由于 V8 垃圾收集器的工作方式,它们是必要的。
- 句柄作用域可以被认为是任意数量句柄的容器。完成句柄后,无需单独删除每个句柄,您只需删除它们的范围即可。
- 上下文是一个执行环境,它允许单独的、不相关的 JavaScript 代码在 V8 的单个实例中运行。您必须明确指定希望运行任何 JavaScript 代码的上下文。
这些概念在Embedder's Guide中有更详细的讨论。
阅读现有文档后,如果仍有不清楚的地方,请提出更具体的问题。
关于(5):在当前版本的 V8 中,v8::Script::Compile
为 V8 的解释器编译字节码。在早期版本中,它编译未优化的机器代码。不同之处在于您无需担心的内部实现细节:-)