releaseJsCore函数的作用是释放指定CoreID对应的JSVM运行时环境所占用的资源,包括销毁JSVM_Env、JSVM_VM,清理相关的回调函数引用、任务队列等资源,确保资源被正确回收,避免内存泄漏。其执行流程如下:参数获取与检查:获取要释放的运行时环境的CoreID参数,检查参数个数是否为1,如果不是则记录错误日志并返回nullptr。然后尝试将CoreID转换为uint32_t类型,如果转换失败则记录错误日志并返回nullptr。接着检查通过CoreID能否找到对应的运行时环境,如果找不到则记录错误日志并返回nullptr。资源释放:使用std::lock_guard加锁,确保多线程环境下的操作安全。首先调用OH_JSVM_DestroyEnv销毁JSVM_Env,将对应的指针置为nullptr,并从g_envMap中删除该环境的记录。然后调用OH_JSVM_DestroyVM销毁JSVM_VM,同样将指针置为nullptr并从g_vmMap中删除记录。接着删除与该CoreID对应的回调函数结构体数组(delete [] g_callBackStructMap[coreEnvId]),并清除回调函数引用(napi_delete_reference),从相应的map中删除相关记录。最后清除该CoreID对应的任务队列(g_taskQueueMap.erase(coreEnvId)),完成资源释放过程。通过releaseJsCore函数,可以在不再需要某个JS运行时环境时,正确地释放其占用的资源,保证系统的稳定性和资源的有效利用。本文参与了 【 HarmonyOS NEXT 技术问答冲榜,等你来战!】欢迎正在阅读的你也加入。
releaseJsCore
函数的作用是释放指定CoreID对应的JSVM运行时环境所占用的资源,包括销毁JSVM_Env
、JSVM_VM
,清理相关的回调函数引用、任务队列等资源,确保资源被正确回收,避免内存泄漏。其执行流程如下:nullptr
。然后尝试将CoreID转换为uint32_t
类型,如果转换失败则记录错误日志并返回nullptr
。接着检查通过CoreID能否找到对应的运行时环境,如果找不到则记录错误日志并返回nullptr
。std::lock_guard
加锁,确保多线程环境下的操作安全。首先调用OH_JSVM_DestroyEnv
销毁JSVM_Env
,将对应的指针置为nullptr
,并从g_envMap
中删除该环境的记录。然后调用OH_JSVM_DestroyVM
销毁JSVM_VM
,同样将指针置为nullptr
并从g_vmMap
中删除记录。接着删除与该CoreID对应的回调函数结构体数组(delete [] g_callBackStructMap[coreEnvId]
),并清除回调函数引用(napi_delete_reference
),从相应的map
中删除相关记录。最后清除该CoreID对应的任务队列(g_taskQueueMap.erase(coreEnvId)
),完成资源释放过程。通过
releaseJsCore
函数,可以在不再需要某个JS运行时环境时,正确地释放其占用的资源,保证系统的稳定性和资源的有效利用。本文参与了 【 HarmonyOS NEXT 技术问答冲榜,等你来战!】欢迎正在阅读的你也加入。