我正在尝试精确测量我的应用程序使用的内存总量。我正在开发一个在电话设备上利用 GPU 的 .so 库。我在开发中主要使用 C/C++ 和 OpenCL,因此,我所有的内存分配都是new/delete
or 或clCreateBuffer/clReleaseMemObject
.
准确地说,我正在寻找以下值:
- 堆上使用的总内存
- 堆栈上使用的总内存(如果可能)
- 用于 OpenCL 缓冲区的总内存
我做了什么:
我曾经dumpsys
使用以下命令收集一些数字:
adb shell dumpsys meminfo com.example.hellolibs.debug -d
而且,我还编写了一些简单的分析代码来跟踪所有 OpenCL 缓冲区分配/释放(我正在跟踪底层 OpenCL 缓冲区的引用计数器)。我使用分析代码测量的总内存使用量大于dumpsys
使用上述命令报告的内存使用量。不应该是这样的,对吧?
我的目标平台是:带有 Mali GPU 的 ARM CPU