このチュートリアルで提供されているコードがあるとしましょう。
Point
V8 の GC が JavaScript ラッパーを破棄したときに、作成された C++ オブジェクトのデストラクタが呼び出され、メモリから削除されるようにするには、どうすればよいでしょうか?
このチュートリアルで提供されているコードがあるとしましょう。
Point
V8 の GC が JavaScript ラッパーを破棄したときに、作成された C++ オブジェクトのデストラクタが呼び出され、メモリから削除されるようにするには、どうすればよいでしょうか?
Persistent ハンドルを作成し、weak にします (v8::Persistent::MakeWeak(data, cb))。コールバックでは、C++ オブジェクトを削除できます。ガベージ コレクターの場合と同様に、弱い到達可能性が決定される正確な時間は、GC がいつ実行されるかによって異なります。したがって、ネイティブ リソースは、予想よりもかなり遅れて解放される可能性があります。保持しているネイティブ リソースの量を V8 に通知できます (v8::AdjustAmountOfExternalAllocatedMemory)。
ノードの「ObjectWrap」は、双方向のネイティブ/JS オブジェクト マッピングと弱いコールバックをカプセル化します: https://github.com/ry/node/blob/master/src/node_object_wrap.h