CUDA的内存泄露问题及解决办法

简介: CUDA的内存泄露问题及解决办法

这几天,发现程序运行时,内存不断增加。首先吾确认自己的代码没有内存泄露,因为自己反复排查过多次,并测试过多次。于是跟踪刚加入的一个插件。于是对其内存进行了排查,发现也没有问题。嗯?


这意思就是,插件运行,导致吾这里内存有泄露?于是对各个功能进行了屏蔽,发现CUDA转JPG的代码会导致内存增加。注释之后,内存不增加了。于是不断的尝试,其中有几次错误结论,终于定位到了错误语句:


NPP_CHECK_CUDA(cudaMalloc(&pJpegEncoderTemp, nTempSize));


只要去掉这一句(当然后面的编码不能执行),内存就不会增加。没有释放?赶紧看看析构函数,有cudaFree()。说明了什么?说明了cudaMalloc()有问题。在1920x1280的情况下,nTempSize=38M。可能是这个原因?



有人问,怎么办?首先这个问题我是解决不了的。那么只有一个办法,绕过去。怎么绕?就是使用一个实例,一次初始化,不释放。这样就不会有问题了。



注意:


  • 图像尺寸初始化时,按照最大的来。
  • 如果多个线程访问,建议使用一个数组,每个进程一个编号,访问各自的编码器。
目录
相关文章
|
3月前
|
缓存 架构师 算法
Java内存溢出如何解决,Java oom排查方法,解决办法
在Java开发过程中,有效的内存管理是保证应用程序稳定性和性能的关键。不正确的内存使用可能导致内存泄露甚至是致命的OutOfMemoryError(OOM)。
|
3月前
|
缓存 架构师 算法
Java内存溢出如何解决,Java oom排查方法,10个定位解决办法
在Java开发过程中,有效的内存管理是保证应用程序稳定性和性能的关键。不正确的内存使用可能导致内存泄露甚至是致命的OutOfMemoryError(OOM)。
|
11月前
|
Web App开发 JavaScript 前端开发
JavaScript 内存溢出解决办法 亲测有效
Vue3是一款非常流行的JavaScript框架,它被广泛应用于Web前端开发中。在使用Vue3进行打包时,有时会遇到以下错误信息:
|
Java
开机后Java(TM) platform SE 占内存大的解决办法
开机后Java(TM) platform SE 占内存大的解决办法
572 0
开机后Java(TM) platform SE 占内存大的解决办法
|
存储 API C++
dump系列(2)C++程序异常或内存错误,导致闪退的解决办法:分析dump文件
dump系列(2)C++程序异常或内存错误,导致闪退的解决办法:分析dump文件
1667 0
|
JavaScript Java
ANGULAR 使用 ng build --prod 编译报内存错误的解决办法
如果你遇到如下的情况 [13724:0000020D39C660D0] 231298 ms: Mark-sweep 1356.3 (1433.6) -> 1356.3 (1433.6) MB, 1194.
2617 0