您好!
我们在
AM5728 EVM 板上使用 Processor SDK 3.3()。
我们已编写了参考 videenc2测试应用的自定义编码应用
)。 我们发现内存泄漏问题。 下面是 API 使用顺序。
分配和映射:
omap_bo_new:缓冲区分配
omap_bo_map:映射到进程地址空间
omap_bo_dabuf:获取 dmabuf fd 以与 Remoteproc 共享
DCE_buf_lock:保留缓冲区 Mmrpc_use
取消分配和免费:
DCE_BUF_UNLOCK:Mmrpc_release
关闭:fd 由 omap_bo_dmabuf 给出
omap_bo_del:删除缓冲区对象
但是、即使在进程退出后、这些缓冲区似乎也不会被释放。 请告知我们是否在无缓冲区中遗漏了任何步骤。
也可以使用 Gstreamer 流水线轻松重现此问题。
!/bin/bash
A=0
而[$a -lt 50000 ]
操作
对于*。264中的文件名;请执行
gs-launch-1.0文件 rc loce="$filename"! 诱骗! fakesink
完成
A=`` expr $a + 1 μ s
完成
"free"命令用于存储器统计信息。
板载引导:
root@am57xx-EVM:~#
root@am57xx-EVM:免费提供~#
可用的可用空闲共享缓冲区/高速缓存总数
MEM:1868348 153452 1511280 28844 203616 1657036
交换:0 0 0
多个 G-streamer 迭代之后
root@am57xx-EVM:~#
root@am57xx-EVM:免费提供~#
可用的可用空闲共享缓冲区/高速缓存总数
内存:1868348 155128 63060 28868 1650160 1655144
交换:0 0 0
root@am57xx-EVM:~#
这似乎不是特定于应用程序的虚拟内存泄漏问题、因为 Linux 在进程退出时会释放所有分配的内存。 使用 free 命令退出进程后、将检查内存统计信息。 此问题看起来与 OMAP-bo API 或其使用情况有关。 请告诉我们是否有办法确定使用此内存的驱动程序/获取更多信息。
如果需要更多/具体信息、请告知我们。