
在项目中,我们设备通过国标28181协议接入到服务器上,设备上线注册成功后,在服务端使用tcp拉流,具体的拉流流程这里就不多讲了,如果不懂的话,可以去找个标准协议看看,里面讲解的很清楚,当实时预览画面出来之后,稳定运行一段时间,这个使用场景和实际用户的场景差不多,设备上线,拉流,查看实时视频,作为监控设备这是基本的功能。
稳定运行一段时间后,发现设备内存减少的很厉害,导致影响了其他业务的正常运行,设备出现了死机情况。
初步判定可能存在内存泄漏,内存泄漏主要是对动态分配的内存没有管理好导致的,项目中用到了new、malloc等动态分配内存的接口,用的时候需要注意及时释放资源。查看内存泄漏可以使用开源软件 Valgrind 工具,使用起来也比较方便;还有就是使用内存钩子,有时间单独讲一期内存钩子的使用方法。但是断开国标28181协议后,内存又能回来,带着这个问题一块往下看👇。