Вы хотите создать постоянный дескриптор и сделать его слабым (v8 :: Persistent :: MakeWeak (data, cb)). В обратном вызове вы можете удалить объект C ++. Как обычно с сборщиком мусора, точное время, в которое будет определена слабая достижимость, зависит от того, когда выполняется GC. Поэтому родные ресурсы могут быть освобождены намного позже, чем вы ожидаете. Вы можете сообщить V8 о количестве имеющихся у вас собственных ресурсов (v8 :: AdjustAmountOfExternalAllocatedMemory).
Узел ObjectWrap инкапсулирует двунаправленное сопоставление нативных / JS-объектов и слабый обратный вызов: https://github.com/ry/node/blob/master/src/node_object_wrap.h