tensorRT_Pro icon indicating copy to clipboard operation
tensorRT_Pro copied to clipboard

此处存在cuda内存泄漏,engine没有调用析构函数,没有销毁

Open HaronCHou opened this issue 2 years ago • 2 comments

https://github.com/shouxieai/tensorRT_Pro/blob/84c3f6894bfdc5d7c3c3a48044f0437936d4fb14/example-simple_yolo/src/simple_yolo.cu#L1841C20-L1841C20

需要在Engine Destroy的打印信息之前加上 engine.reset()才能成功将申请的CudaStream给释放掉;这里将造成内存泄漏。

ls -l /proc/进程号/fd 可以观察到内存泄漏!

虽然程序退出后,系统会自动回收句柄,但这里不断的new和delete之后,将造成大量泄漏

HaronCHou avatar Oct 19 '23 11:10 HaronCHou

为什么这里会不断new engine呢,这个worker我理解是在一个线程里运行的,程序不推出这个worker会一直在while循环里等待job

scteam1994 avatar Jan 31 '24 07:01 scteam1994

为什么这里会不断new engine呢,这个worker我理解是在一个线程里运行的,程序不推出这个worker会一直在while循环里等待job

程序最后退出的时候,没有取访问engine的析构函数,有一部分内存没有释放。

  • 最后发现这问题也解决不了;就是cuda stream这些资源的管理,在主程序没退出的时候,还是一直存在,所以只能不管了。
  • 你强行退出的话,反而会不断的new。cuda对资源管理的问题吧,我也搞不懂了。

HaronCHou avatar Jan 31 '24 07:01 HaronCHou