项目中存在内存泄漏的源头是:调用底层c++接口,获取buffer数据(一帧一帧的图片数据),将buffer数据使用cavans进行渲染,发现只要调用c++的接口,在任务管理器中就会看到项目的内存一直再增加。
经c++同事指点,获取他们的数据格式为{width:1280,height:720,data:buffer,retual:true},其中buffer数据不受node垃圾回收机制的限制,需要手动清除。
修改前:将整个数据传给前端页面进行渲染
this.sendDataToPage(info)
修改后:将获取的c++数据中data(不受node层控制)清除掉,重新赋值给一个变量。新定义的变量受node层控制,可回收
let info={width:1280,height:720,data:buffer,retual:true}
if(info.data){
let bufferData=Buffer.from(info.data)
info.data=null
this.sendDataToPage({...info,data:bufferData})
}