HarmonyOS鸿蒙Next中当前是否有机制可以检查napi_create_reference创建出的napi_ref的泄漏情况

HarmonyOS鸿蒙Next中当前是否有机制可以检查napi_create_reference创建出的napi_ref的泄漏情况

napi_create_reference可以创建对js对象的引用,保持js对象不释放,正常来说使用完需要使用napi_delete_reference进行释放,但怕漏delete导致js对象内存泄漏,请问当前是否有机制来检查/测试是否有泄漏的napi_reference?

3 回复

可以使用deveco stutio(IDE)提供的Allocation工具来搞。

基础内存分析:Allocation分析-性能分析-DevEco Studio - 华为HarmonyOS开发者

napi_create_reference这个接口内部实现会new一个c++对象,因此,如果忘记使用napi_delete_reference接口,那这个new出来的c++对象也会泄漏,这时候就可以用Allocation工具来进行检测,这个工具会把未释放的对象的分配栈都打印出来,如果napi_ref泄漏了,可以在分配栈上看出来

更多关于HarmonyOS鸿蒙Next中当前是否有机制可以检查napi_create_reference创建出的napi_ref的泄漏情况的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


HarmonyOS鸿蒙Next中,目前没有直接内置的机制来检查napi_create_reference创建出的napi_ref的泄漏情况。开发者需要通过手动管理引用计数和生命周期来确保资源正确释放。可以使用napi_delete_reference显式删除不再需要的引用,避免内存泄漏。

在HarmonyOS Next中,目前没有内置的自动化机制来直接检测napi_ref泄漏。开发者需要自行管理napi_ref的生命周期,确保每个napi_create_reference都有对应的napi_delete_reference调用。

建议采用以下方式手动检查:

  1. 在开发阶段通过代码审查确保成对调用
  2. 使用内存分析工具检查JS对象是否异常驻留
  3. 在关键节点添加日志输出,跟踪reference的创建和销毁

对于复杂场景,可以考虑封装reference管理工具类,通过计数器等方式辅助检测未释放的reference。但最终仍需开发者保证正确调用delete接口。

回到顶部