5

假设我有本教程中提供的代码。

当 V8 的 GC 破坏 JavaScript 包装器时,我将如何修改它以便Point创建的 C++ 对象调用其析构函数并从内存中删除?

4

1 回答 1

8

您想创建一个持久句柄并使其变弱 (v8::Persistent::MakeWeak(data, cb))。在回调中,您可以删除 C++ 对象。与垃圾收集器一样,确定弱可达性的确切时间取决于执行 GC 的时间。因此,本机资源的释放时间可能比您预期的要晚得多。您可以告知 V8 您持有的本机资源数量 (v8::AdjustAmountOfExternalAllocatedMemory)。

node的“ObjectWrap”封装了双向native/JS对象映射和弱回调:https ://github.com/ry/node/blob/master/src/node_object_wrap.h

于 2011-01-09T20:24:57.433 回答