Skip to content

[v12.x] src: use symbol to store `AsyncWrap` resource

Use a symbol on the bindings object to store the public resource object, rather than a v8::Global Persistent. This has several advantages:

  • It’s harder to inadvertently create memory leaks this way. The garbage collector sees the AsyncWrap → resource link like a regular JS property, and can collect the objects as a group, even if the resource object should happen to point back to the AsyncWrap object.
  • This will make it easier in the future to use owner_symbol for this purpose, which is generally the direction we should be moving the async_hooks API into (i.e. using more public objects instead of letting internal wires stick out).

PR-URL: https://github.com/nodejs/node/pull/31745

Merge request reports

Loading