EasyGBS国标GB28181协议视频平台内存上升如何解决?
国标GB28181协议视频平台EasyGBS已经实现了十分丰富的安防视频功能,如视频直播、录像、检索与回放、存储、告警、语音对讲、平台级联等能力。去年我们也更换了新内核,新内核版的EasyGBS性能更加稳定和流畅。
EasyGBS支持设备以GB28181协议接入,能兼容市面上的各种视频源设备,其强大的视频能力既可以作为业务平台,也能作为视频能力平台进行调用,有广泛的应用场景,如明厨亮灶、雪亮工程、平安乡村等。
用户的EasyGBS接入大量设备、或者运行时间过长时,会出现内存上升的情况。关于内存这一块,我们之前也写过不少的技术文章,大家可以翻阅历史文章进行查阅。今天我们来分享如何对EasyGBS的内存泄露情况进行排查与解决。
GO语言的内存释放是自动调用gc,无须代码调用gc。在排查时,发现在Cgo模块GO语言类型转换为C的结构cbytes时候,c.free调用有问题,unsafe.Pointer(cbytes)和&cbytes的内存地址不一样,如下图:
初步判断是这块free的时候参数有问题,于是将C.free(unsafe.Pointer(cBytes)) 改成C.free(cBytes)。修改后发现内存上升明显减少,但是还存在释放不了的情况,于是在main.go中加上主动释放GO内存的方法:
本地测试后发现,上述修改后后EasyGBS的内存不会出现持续升高的情况了。后期长时间运行,发现不添加主动gc的操作也可以,程序会在2个小时以上才会清空一次内存。
随着大数据技术与深度学习的持续提升,人工智能应用也逐渐与安防行业进行了深度融合,安防智能化已经成为行业的趋势。基于AI深度学习算法,智能化的安防视频监控平台可以提取视频特征、对视频数据进行结构化处理等,在应用场景中实现如人脸识别、人流量统计、人群密度检测、安全帽检测、烟火检测、危险行为识别、物体识别、目标追踪等能力。将前端边缘计算、后端云计算、大数据平台、视频图像AI智能分析技术相结合已经是当前安防视频监控市场的发展方向。
TSINGSEE青犀视频平台(典型的如EasyCVR视频融合云平台)结合前端边缘计算AI智能摄像机,也已经实现多场景下的视频+AI智能检测识别应用,欢迎关注我们了解更多。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 提示词工程——AI应用必不可少的技术
· 字符编码:从基础到乱码解决
· 地球OL攻略 —— 某应届生求职总结