Let’s say I have the code provided in this tutorial.
How would I modify this so that the Point C++ object that is created has its destructor called and is deleted from memory when the GC for V8 destroys the JavaScript wrapper?
Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.
Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.
Lost your password? Please enter your email address. You will receive a link and will create a new password via email.
Please briefly explain why you feel this question should be reported.
Please briefly explain why you feel this answer should be reported.
Please briefly explain why you feel this user should be reported.
You want to create a Persistent handle and make it weak (v8::Persistent::MakeWeak(data, cb)). In the callback you can delete the C++ object. As usual with a garbage collector, the exact time at which weak-reachability will be determined is dependent on when GC is performed. Native resources may therefore be freed much later than you expect. You can inform V8 about the amount of native resources you are holding (v8::AdjustAmountOfExternalAllocatedMemory).
node’s “ObjectWrap” encapsulates the bidirectional native/JS object mapping and weak callback: https://github.com/ry/node/blob/master/src/node_object_wrap.h