BreakingY / jetpack-dec-enc

Jetson Video Encoding and Decoding ; Jetson Jetpack5.x视频编解码库
MIT License
25 stars 2 forks source link

JetsonDec 解码类,内存泄漏 #4

Closed AadeIT closed 2 months ago

AadeIT commented 2 months ago

哈喽,作者非常感谢您开源这个项目,我目前在学习这个项目,对我非常有帮助。

我在做测试时,发现不断重启jetsonDec类会产生内存泄漏,gpu的mem不断增长。 在jetson orin上使用jtop 查看,可以看到进程的GPU MEM部分从200m增长到2g,还在增加 。

以下是我修改的代码,如果jetsonDec类不重启,还是比较稳定的,但是真实业务中,为了节省资源,会不断重启。 您是否知道什么原因? 或者可以给我一个方向,我来定位问题,并且PR ,感谢 🙏 image

AadeIT commented 2 months ago

更新1: 如果只拉流,不调用addes函数解码(但是创建解码类),不断的重启,内存大约在100m非常稳定。应该是只有解码并且析构才会造成内存泄漏。 其余测试我还在做

AadeIT commented 2 months ago

更新2 : 发现在 https://github.com/BreakingY/jetpack-dec-enc/blob/189065a9395cb6726020431ecdd73b5fc14b3dd0/jetson_dec_5.0.2/JetsonDec.cpp#L253 ,将int变量通过指针形式 传递给函数,函数将指针当作数组头指针,自增的形式++赋值,但是在实际使用中和销毁时,都是以int变量的形式使用,而非*int[numBuffers]的形式,导致的内存溢出。现在虽然创建的是3个,但是使用的都是同一个。

更新1没有出现这个问题是因为,没有解码数据就不会调用query来创建内存。