(何时)是原生node.js插件中必需的HandleScopes(仍然)?

时间:2016-08-29 00:56:55

标签: node.js

Addons上的Node.js v6.4.0文档中,函数遵循以下模式。

void X(const FunctionCallbackInfo<Value>& args) {
  Isolate* isolate = args.GetIsolate();
  ...
}

所以没有HandleScope的实例化,就像之前版本的node.js一样。只有一个例外,HandleScope scope(isolate)已完成。

大多数函数都会实例化Local<...>句柄,所以我希望HandleScope是必需的,所以垃圾收集是在函数返回时完成的。

那么:在node.js 6.4.0原生插件中何时需要HandleScope?

1 个答案:

答案 0 :(得分:1)

一般来说,如果从JavaScript调用该函数,则不需要HandleScope。这是因为已经存在从您的JavaScript调用站点继承的(父)范围。只要JavaScript范围被垃圾收集,那么您在C ++中创建的任何句柄也会被收集,因为它们已经附加到该范围。

因此,为每个功能添加HandleScope不会对任何事情造成伤害,只是因为它可能会影响性能。