假设我有 this tutorial 中提供的代码.
我该如何修改它,以便当 V8 的 GC 销毁 JavaScript 包装器时,创建的 Point
C++ 对象调用其析构函数并从内存中删除?
最佳答案
您想创建一个持久句柄并使其变弱 (v8::Persistent::MakeWeak(data, cb))。在回调中,您可以删除 C++ 对象。与垃圾收集器一样,确定弱可达性的确切时间取决于执行 GC 的时间。因此, native 资源的释放可能比您预期的要晚得多。您可以通知 V8 您持有的原生资源数量 (v8::AdjustAmountOfExternalAllocatedMemory)。
node的“ObjectWrap”封装了双向native/JS对象映射和弱回调:https://github.com/ry/node/blob/master/src/node_object_wrap.h
关于javascript - 在 V8 中,如何在垃圾回收 JavaScript 对象后删除包装的 C++ 对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4573446/