开发cronet项目时,需要使用napi给cronet封装一层接口,好让js调用方便。但使用的过程中通过日志发现有些napi\_wrap的c++ 对象并没有释放,如何发现。在构造函数中登记this指针,在析构函数中取消登记。最后打印未取消登记的,发现有一堆未释放的 c++ 对象,如下图:
开发cronet项目时,需要使用napi给cronet封装一层接口,好让js调用方便。但使用的过程中通过日志发现有些napi\_wrap的c++ 对象并没有释放,如何发现。在构造函数中登记this指针,在析构函数中取消登记。最后打印未取消登记的,发现有一堆未释放的 c++ 对象,如下图:
解决方案
napi\_wrap接口的使用,请参考:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/napi-guidelines-V5
里面提到了napi\_remove\_wrap删除napi\_ref,这样GC才能正常释放js\_object。
GC机制:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/gc-introduction-V5