我想测量在Android上运行的OpenCL应用程序的内存使用情况。有可靠的方法吗?
我在设备上尝试了adb shell dumpsys meminfo
,Android Studio的探查器和pmap
。看来meminfo
和Android Studio的探查器都关闭了2倍,并且设备上的pmap
给出了不可靠的数据。
考虑以下代码来设置OpenCL并分配4096x576图像。
#include <iostream>
#include <vector>
#define CL_HPP_TARGET_OPENCL_VERSION 200
#include <CL/cl2.hpp>
int main() {
std::vector<cl::Platform> platforms;
cl::Platform::get(&platforms);
cl::Platform platform = platforms[0];
std::vector<cl::Device> all_devices;
platform.getDevices(CL_DEVICE_TYPE_ALL, &all_devices);
cl::Device device = all_devices[0];
cl_int err;
cl::Context context({device}, nullptr, nullptr, nullptr, &err);
if (err != CL_SUCCESS) {
std::cerr << "error: " << err << std::endl;
exit(1);
}
cl::CommandQueue queue(context, all_devices[0], 0, &err);
if (err != CL_SUCCESS) {
std::cerr << "error: " << err << std::endl;
exit(1);
}
//////////////// (1) //////////////////
std::cin.get();
cl::ImageFormat img_format(CL_RGBA, CL_FLOAT);
auto *x = new cl::Image2D(context, CL_MEM_READ_WRITE | CL_MEM_ALLOC_HOST_PTR, img_format,
4096, 576, 0, nullptr, &err);
if (err != CL_SUCCESS) {
std::cerr << "error: " << err << std::endl;
exit(1);
}
cl::Event event;
cl_float4 color{0.7, 0.7, 0.7, 0.7};
queue.enqueueFillImage(*x, color, {0, 0, 0}, {4096, 576, 1}, nullptr, &event);
event.wait();
///////////////////// (2) //////////////
std::cin.get();
return 0;
}
我已经测量了每个cin.get()
之前的内存使用情况,即在由(1)和(2)标记的代码点处。在这些点之间,我以rgba格式分配4096x576图像,以便每个像素包含4个浮点数。预期的内存使用量为4096 * 576 * 4 * 4 = 36MB。但是,adb shell dumpsys meminfo
报告的总内存使用量差异为72MB。
Android Studio探查器的输出似乎与meminfo
收集的内容差不多。
当我adb shell
进入设备并比较点(1)和(2)的pmap
输出时,要使其更有趣,我得到的总内存差等于36MB-恰好是我的值原本预期,但是pmap
在随后的两次运行中却产生了截然不同的内存使用情况。 (不过,(1)和(2)之间的差异是恒定的。)
这两种方法中的任何一种都可以提供准确的内存使用吗?如果没有,我如何获得该应用程序的实际内存使用情况?
上面的代码通过运行
使用android-ndk-r20进行编译cmake -DCMAKE_TOOLCHAIN_FILE=${ANDROID_NDK}/build/cmake \ android.toolchain.cmake \
-DCMAKE_SYSTEM_NAME=Android \
-DCMAKE_SYSTEM_VERSION=23 \
-DANDROID_ABI="armeabi-v7a" \
-DANDROID_TOOLCHAIN=clang \
-DCMAKE_BUILD_TYPE=Release \
-DOpenCL_LIBRARY=${OPENCL}/libOpenCL.so \
-DOpenCL_INCLUDE_DIR=${OPENCL} \
..
带有以下CMakeLists.txt
:
cmake_minimum_required(VERSION 3.10)
project(open_cl_test)
set(CMAKE_CXX_STANDARD 17)
find_package(OpenCL REQUIRED)
add_executable(open_cl_test main.cpp)
message(STATUS ${OpenCL_LIBRARY})
include_directories(${OpenCL_INCLUDE_DIR})
target_link_libraries(open_cl_test ${OpenCL_LIBRARY})
meminfo
在(1)处的精确输出:
Applications Memory Usage (in Kilobytes):
Uptime: 1587044222 Realtime: 3641071359
Pss Private Private SwapPss Heap Heap Heap
Total Dirty Clean Dirty Size Alloc Free
------ ------ ------ ------ ------ ------ ------
Native Heap 212 212 0 0 0 0 0
Dalvik Heap 0 0 0 0 0 0 0
Stack 28 28 0 0
Gfx dev 36 36 0 0
Other dev 0 0 0 0
.so mmap 1544 864 604 0
Other mmap 119 28 84 0
GL mtrack 4388 4388 0 0
Unknown 208 208 0 0
TOTAL 6535 5764 688 0 0 0 0
App Summary
Pss(KB)
------
Java Heap: 0
Native Heap: 212
Code: 1468
Stack: 28
Graphics: 4424
Private Other: 320
System: 83
TOTAL: 6535 TOTAL SWAP PSS: 0
和(2):
Applications Memory Usage (in Kilobytes):
Uptime: 1587054603 Realtime: 3641081740
Pss Private Private SwapPss Heap Heap Heap
Total Dirty Clean Dirty Size Alloc Free
------ ------ ------ ------ ------ ------ ------
Native Heap 216 216 0 0 0 0 0
Dalvik Heap 0 0 0 0 0 0 0
Stack 28 28 0 0
Gfx dev 36948 36804 144 0
Other dev 0 0 0 0
.so mmap 1618 864 648 0
Other mmap 119 28 84 0
GL mtrack 41276 41276 0 0
Unknown 208 208 0 0
TOTAL 80413 79424 876 0 0 0 0
App Summary
Pss(KB)
------
Java Heap: 0
Native Heap: 216
Code: 1512
Stack: 28
Graphics: 78224
Private Other: 320
System: 113
TOTAL: 80413 TOTAL SWAP PSS: 0
pmap
在(1)处的输出:
0000000001a98000 172K r-x-- /data/local/tmp/opencltest/open_cl_test
0000000001ac3000 12K r---- /data/local/tmp/opencltest/open_cl_test
0000000001ac6000 4K rw--- /data/local/tmp/opencltest/open_cl_test
0000000001ac7000 8700K ----- [heap]
00000000bebac000 48K rw-s- /dev/kgsl-3d0
00000000bebb8000 96K rw-s- /dev/kgsl-3d0
00000000bebd0000 1024K rw-s- /dev/kgsl-3d0
00000000becd0000 1024K rw-s- /dev/kgsl-3d0
00000000bedd0000 64K rw-s- /dev/kgsl-3d0
00000000bede0000 64K rw-s- /dev/kgsl-3d0
00000000bedf2000 4K rw-s- /dev/kgsl-3d0
00000000bedf3000 8K rw-s- /dev/kgsl-3d0
00000000bedf5000 8K rw-s- /dev/kgsl-3d0
00000000bedf7000 4K rw-s- /dev/kgsl-3d0
00000000bedf8000 2056K rw-s- /dev/kgsl-3d0
00000000beffa000 4K rw-s- /dev/kgsl-3d0
00000000beffb000 20K rw-s- /dev/kgsl-3d0
00000000e3086000 4K ----- [anon:thread stack guard page]
00000000e3087000 1008K rw--- [anon]
00000000e3183000 4K ----- [anon:thread stack guard page]
00000000e3184000 1008K rw--- [anon]
00000000e3280000 512K rw--- [anon:libc_malloc]
00000000e3346000 21612K r-x-- /vendor/lib/libllvm-qcom.so
00000000e4861000 272K r---- /vendor/lib/libllvm-qcom.so
00000000e48a5000 392K rw--- /vendor/lib/libllvm-qcom.so
00000000e4907000 36K rw--- [anon:.bss]
00000000e4946000 80K r-x-- /system/lib/libunwind.so
00000000e495a000 4K ----- [anon]
00000000e495b000 4K r---- /system/lib/libunwind.so
00000000e495c000 4K rw--- /system/lib/libunwind.so
00000000e495d000 280K rw--- [anon:.bss]
00000000e49e4000 12K r-x-- /system/lib/libvndksupport.so
00000000e49e7000 4K r---- /system/lib/libvndksupport.so
00000000e49e8000 4K rw--- /system/lib/libvndksupport.so
00000000e4a1c000 88K r-x-- /system/lib/liblzma.so
00000000e4a32000 4K ----- [anon]
00000000e4a33000 4K r---- /system/lib/liblzma.so
00000000e4a34000 4K rw--- /system/lib/liblzma.so
00000000e4a35000 24K rw--- [anon:.bss]
00000000e4a68000 80K r-x-- /system/lib/libbacktrace.so
00000000e4a7c000 4K r---- /system/lib/libbacktrace.so
00000000e4a7d000 4K rw--- /system/lib/libbacktrace.so
00000000e4a88000 1124K r-x-- /vendor/lib/libCB.so
00000000e4ba1000 28K r---- /vendor/lib/libCB.so
00000000e4ba8000 8K rw--- /vendor/lib/libCB.so
00000000e4baa000 8K rw--- [anon:.bss]
00000000e4be8000 60K r-x-- /system/lib/libbase.so
00000000e4bf7000 4K r---- /system/lib/libbase.so
00000000e4bf8000 4K rw--- /system/lib/libbase.so
00000000e4c13000 88K r-x-- /system/lib/libutils.so
00000000e4c29000 4K r---- /system/lib/libutils.so
00000000e4c2a000 4K rw--- /system/lib/libutils.so
00000000e4c47000 1276K r-x-- /vendor/lib/libgsl.so
00000000e4d86000 4K r---- /vendor/lib/libgsl.so
00000000e4d87000 4K rw--- /vendor/lib/libgsl.so
00000000e4d88000 4K rw--- [anon:.bss]
00000000e4dc4000 12K r-x-- /system/lib/libsync.so
00000000e4dc7000 4K r---- /system/lib/libsync.so
00000000e4dc8000 4K rw--- /system/lib/libsync.so
00000000e4e20000 88K r-x-- /system/lib/libz.so
00000000e4e36000 4K ----- [anon]
00000000e4e37000 4K r---- /system/lib/libz.so
00000000e4e38000 4K rw--- /system/lib/libz.so
00000000e4e42000 16K r-x-- /system/lib/libnetd_client.so
00000000e4e46000 4K r---- /system/lib/libnetd_client.so
00000000e4e47000 4K rw--- /system/lib/libnetd_client.so
00000000e4e80000 1024K rw--- [anon:libc_malloc]
00000000e4fd0000 12K r-x-- /system/lib/libdl.so
00000000e4fd3000 4K r---- /system/lib/libdl.so
00000000e4fd4000 4K rw--- /system/lib/libdl.so
00000000e4fd5000 4K rw--- [anon:.bss]
00000000e501a000 556K r-x-- /system/lib/libc++.so
00000000e50a5000 4K ----- [anon]
00000000e50a6000 16K r---- /system/lib/libc++.so
00000000e50aa000 4K rw--- /system/lib/libc++.so
00000000e50ab000 4K rw--- [anon:.bss]
00000000e50cb000 64K r-x-- /vendor/lib/libOpenCL.so
00000000e50db000 4K r---- /vendor/lib/libOpenCL.so
00000000e50dc000 4K rw--- /vendor/lib/libOpenCL.so
00000000e50f3000 128K r--s- /dev/__properties__/u:object_r:debug_prop:s0
00000000e5113000 52K r-x-- /system/lib/libcutils.so
00000000e5120000 4K ----- [anon]
00000000e5121000 4K r---- /system/lib/libcutils.so
00000000e5122000 4K rw--- /system/lib/libcutils.so
00000000e513c000 128K r--s- /dev/__properties__/u:object_r:persist_dpm_prop:s0
00000000e515c000 72K r-x-- /system/lib/liblog.so
00000000e516e000 4K r---- /system/lib/liblog.so
00000000e516f000 4K rw--- /system/lib/liblog.so
00000000e517e000 128K r--s- /dev/__properties__/u:object_r:default_prop:s0
00000000e519e000 128K r-x-- /system/lib/libm.so
00000000e51be000 4K r---- /system/lib/libm.so
00000000e51bf000 4K rw--- /system/lib/libm.so
00000000e51c8000 568K r-x-- /system/lib/libc.so
00000000e5256000 16K r---- /system/lib/libc.so
00000000e525a000 8K rw--- /system/lib/libc.so
00000000e525c000 4K rw--- [anon:.bss]
00000000e525d000 4K r---- [anon:.bss]
00000000e525e000 24K rw--- [anon:.bss]
00000000e527d000 4K r---- [anon:atexit handlers]
00000000e527e000 128K r--s- /dev/__properties__/properties_serial
00000000e529e000 4K rw--- [anon:linker_alloc]
00000000e52b2000 4K r---- [anon:linker_alloc]
00000000e52c5000 4K rw--- [anon:arc4random data]
00000000e52d3000 4K ----- [anon:thread signal stack guard page]
00000000e52d4000 16K rw--- [anon:thread signal stack]
00000000e52d8000 4K ----- [anon:bionic TLS guard]
00000000e52d9000 12K rw--- [anon:bionic TLS]
00000000e52dc000 4K ----- [anon:bionic TLS guard]
00000000e52dd000 4K ----- [anon:thread signal stack guard page]
00000000e52de000 16K rw--- [anon:thread signal stack]
00000000e52e2000 4K rw--- [anon:linker_alloc_small_objects]
00000000e52e5000 4K ----- [anon:bionic TLS guard]
00000000e52e6000 12K rw--- [anon:bionic TLS]
00000000e52e9000 4K ----- [anon:bionic TLS guard]
00000000e52ea000 4K r---- [anon:atexit handlers]
00000000e52eb000 8K r--s- /dev/kgsl-3d0
00000000e52ed000 4K rw--- [anon:linker_alloc_vector]
00000000e52ee000 4K r---- [anon:linker_alloc]
00000000e52ef000 4K rw--- [anon:linker_alloc]
00000000e52f0000 128K r--s- /dev/__properties__/u:object_r:default_prop:s0
00000000e5310000 128K r--s- /dev/__properties__/u:object_r:debug_prop:s0
00000000e5330000 128K r--s- /dev/__properties__/properties_serial
00000000e5350000 8K rw--- [anon:linker_alloc_vector]
00000000e5352000 4K r---- [anon:linker_alloc]
00000000e5353000 4K rw--- [anon:linker_alloc_small_objects]
00000000e5354000 4K rw--- [anon:linker_alloc_vector]
00000000e5355000 4K rw--- [anon:linker_alloc_small_objects]
00000000e5356000 4K rw--- [anon:linker_alloc_vector]
00000000e5357000 4K ----- [anon]
00000000e5358000 4K rw--- [anon]
00000000e5359000 4K ----- [anon]
00000000e535a000 4K rw--- [anon:linker_alloc_lob]
00000000e535b000 4K r---- [anon:linker_alloc]
00000000e535c000 16K rw--- [anon:linker_alloc_small_objects]
00000000e5360000 4K r---- [anon:atexit handlers]
00000000e5361000 4K ----- [anon:thread signal stack guard page]
00000000e5362000 16K rw--- [anon:thread signal stack]
00000000e5366000 4K ----- [anon:bionic TLS guard]
00000000e5367000 12K rw--- [anon:bionic TLS]
00000000e536a000 4K ----- [anon:bionic TLS guard]
00000000e536b000 544K r-x-- /system/bin/linker
00000000e53f3000 4K rw--- [anon:arc4random data]
00000000e53f4000 8K r---- /system/bin/linker
00000000e53f6000 4K rw--- /system/bin/linker
00000000e53f7000 288K rw--- [anon]
00000000e543f000 4K r---- [anon]
00000000e5440000 24K rw--- [anon]
00000000f9bde000 136K rw--- [stack]
00000000f9c00000 102336K ----- [anon]
00000000ffff0000 4K r-x-- [vectors]
total 148616K
在(2):
27417: ./open_cl_test
0000000001a98000 172K r-x-- /data/local/tmp/opencltest/open_cl_test
0000000001ac3000 12K r---- /data/local/tmp/opencltest/open_cl_test
0000000001ac6000 4K rw--- /data/local/tmp/opencltest/open_cl_test
0000000001ac7000 8700K ----- [heap]
00000000bc7a3000 36900K rw-s- /dev/kgsl-3d0
00000000bebac000 48K rw-s- /dev/kgsl-3d0
00000000bebb8000 96K rw-s- /dev/kgsl-3d0
00000000bebd0000 1024K rw-s- /dev/kgsl-3d0
00000000becd0000 1024K rw-s- /dev/kgsl-3d0
00000000bedd0000 64K rw-s- /dev/kgsl-3d0
00000000bede0000 64K rw-s- /dev/kgsl-3d0
00000000bedf2000 4K rw-s- /dev/kgsl-3d0
00000000bedf3000 8K rw-s- /dev/kgsl-3d0
00000000bedf5000 8K rw-s- /dev/kgsl-3d0
00000000bedf7000 4K rw-s- /dev/kgsl-3d0
00000000bedf8000 2056K rw-s- /dev/kgsl-3d0
00000000beffa000 4K rw-s- /dev/kgsl-3d0
00000000beffb000 20K rw-s- /dev/kgsl-3d0
00000000e3086000 4K ----- [anon:thread stack guard page]
00000000e3087000 1008K rw--- [anon]
00000000e3183000 4K ----- [anon:thread stack guard page]
00000000e3184000 1008K rw--- [anon]
00000000e3280000 512K rw--- [anon:libc_malloc]
00000000e3346000 21612K r-x-- /vendor/lib/libllvm-qcom.so
00000000e4861000 272K r---- /vendor/lib/libllvm-qcom.so
00000000e48a5000 392K rw--- /vendor/lib/libllvm-qcom.so
00000000e4907000 36K rw--- [anon:.bss]
00000000e4946000 80K r-x-- /system/lib/libunwind.so
00000000e495a000 4K ----- [anon]
00000000e495b000 4K r---- /system/lib/libunwind.so
00000000e495c000 4K rw--- /system/lib/libunwind.so
00000000e495d000 280K rw--- [anon:.bss]
00000000e49e4000 12K r-x-- /system/lib/libvndksupport.so
00000000e49e7000 4K r---- /system/lib/libvndksupport.so
00000000e49e8000 4K rw--- /system/lib/libvndksupport.so
00000000e4a1c000 88K r-x-- /system/lib/liblzma.so
00000000e4a32000 4K ----- [anon]
00000000e4a33000 4K r---- /system/lib/liblzma.so
00000000e4a34000 4K rw--- /system/lib/liblzma.so
00000000e4a35000 24K rw--- [anon:.bss]
00000000e4a68000 80K r-x-- /system/lib/libbacktrace.so
00000000e4a7c000 4K r---- /system/lib/libbacktrace.so
00000000e4a7d000 4K rw--- /system/lib/libbacktrace.so
00000000e4a88000 1124K r-x-- /vendor/lib/libCB.so
00000000e4ba1000 28K r---- /vendor/lib/libCB.so
00000000e4ba8000 8K rw--- /vendor/lib/libCB.so
00000000e4baa000 8K rw--- [anon:.bss]
00000000e4be8000 60K r-x-- /system/lib/libbase.so
00000000e4bf7000 4K r---- /system/lib/libbase.so
00000000e4bf8000 4K rw--- /system/lib/libbase.so
00000000e4c13000 88K r-x-- /system/lib/libutils.so
00000000e4c29000 4K r---- /system/lib/libutils.so
00000000e4c2a000 4K rw--- /system/lib/libutils.so
00000000e4c47000 1276K r-x-- /vendor/lib/libgsl.so
00000000e4d86000 4K r---- /vendor/lib/libgsl.so
00000000e4d87000 4K rw--- /vendor/lib/libgsl.so
00000000e4d88000 4K rw--- [anon:.bss]
00000000e4dc4000 12K r-x-- /system/lib/libsync.so
00000000e4dc7000 4K r---- /system/lib/libsync.so
00000000e4dc8000 4K rw--- /system/lib/libsync.so
00000000e4e20000 88K r-x-- /system/lib/libz.so
00000000e4e36000 4K ----- [anon]
00000000e4e37000 4K r---- /system/lib/libz.so
00000000e4e38000 4K rw--- /system/lib/libz.so
00000000e4e42000 16K r-x-- /system/lib/libnetd_client.so
00000000e4e46000 4K r---- /system/lib/libnetd_client.so
00000000e4e47000 4K rw--- /system/lib/libnetd_client.so
00000000e4e80000 1024K rw--- [anon:libc_malloc]
00000000e4fd0000 12K r-x-- /system/lib/libdl.so
00000000e4fd3000 4K r---- /system/lib/libdl.so
00000000e4fd4000 4K rw--- /system/lib/libdl.so
00000000e4fd5000 4K rw--- [anon:.bss]
00000000e501a000 556K r-x-- /system/lib/libc++.so
00000000e50a5000 4K ----- [anon]
00000000e50a6000 16K r---- /system/lib/libc++.so
00000000e50aa000 4K rw--- /system/lib/libc++.so
00000000e50ab000 4K rw--- [anon:.bss]
00000000e50cb000 64K r-x-- /vendor/lib/libOpenCL.so
00000000e50db000 4K r---- /vendor/lib/libOpenCL.so
00000000e50dc000 4K rw--- /vendor/lib/libOpenCL.so
00000000e50f3000 128K r--s- /dev/__properties__/u:object_r:debug_prop:s0
00000000e5113000 52K r-x-- /system/lib/libcutils.so
00000000e5120000 4K ----- [anon]
00000000e5121000 4K r---- /system/lib/libcutils.so
00000000e5122000 4K rw--- /system/lib/libcutils.so
00000000e513c000 128K r--s- /dev/__properties__/u:object_r:persist_dpm_prop:s0
00000000e515c000 72K r-x-- /system/lib/liblog.so
00000000e516e000 4K r---- /system/lib/liblog.so
00000000e516f000 4K rw--- /system/lib/liblog.so
00000000e517e000 128K r--s- /dev/__properties__/u:object_r:default_prop:s0
00000000e519e000 128K r-x-- /system/lib/libm.so
00000000e51be000 4K r---- /system/lib/libm.so
00000000e51bf000 4K rw--- /system/lib/libm.so
00000000e51c8000 568K r-x-- /system/lib/libc.so
00000000e5256000 16K r---- /system/lib/libc.so
00000000e525a000 8K rw--- /system/lib/libc.so
00000000e525c000 4K rw--- [anon:.bss]
00000000e525d000 4K r---- [anon:.bss]
00000000e525e000 24K rw--- [anon:.bss]
00000000e527d000 4K r---- [anon:atexit handlers]
00000000e527e000 128K r--s- /dev/__properties__/properties_serial
00000000e529e000 4K rw--- [anon:linker_alloc]
00000000e52b2000 4K r---- [anon:linker_alloc]
00000000e52c5000 4K rw--- [anon:arc4random data]
00000000e52d3000 4K ----- [anon:thread signal stack guard page]
00000000e52d4000 16K rw--- [anon:thread signal stack]
00000000e52d8000 4K ----- [anon:bionic TLS guard]
00000000e52d9000 12K rw--- [anon:bionic TLS]
00000000e52dc000 4K ----- [anon:bionic TLS guard]
00000000e52dd000 4K ----- [anon:thread signal stack guard page]
00000000e52de000 16K rw--- [anon:thread signal stack]
00000000e52e2000 4K rw--- [anon:linker_alloc_small_objects]
00000000e52e5000 4K ----- [anon:bionic TLS guard]
00000000e52e6000 12K rw--- [anon:bionic TLS]
00000000e52e9000 4K ----- [anon:bionic TLS guard]
00000000e52ea000 4K r---- [anon:atexit handlers]
00000000e52eb000 8K r--s- /dev/kgsl-3d0
00000000e52ed000 4K rw--- [anon:linker_alloc_vector]
00000000e52ee000 4K r---- [anon:linker_alloc]
00000000e52ef000 4K rw--- [anon:linker_alloc]
00000000e52f0000 128K r--s- /dev/__properties__/u:object_r:default_prop:s0
00000000e5310000 128K r--s- /dev/__properties__/u:object_r:debug_prop:s0
00000000e5330000 128K r--s- /dev/__properties__/properties_serial
00000000e5350000 8K rw--- [anon:linker_alloc_vector]
00000000e5352000 4K r---- [anon:linker_alloc]
00000000e5353000 4K rw--- [anon:linker_alloc_small_objects]
00000000e5354000 4K rw--- [anon:linker_alloc_vector]
00000000e5355000 4K rw--- [anon:linker_alloc_small_objects]
00000000e5356000 4K rw--- [anon:linker_alloc_vector]
00000000e5357000 4K ----- [anon]
00000000e5358000 4K rw--- [anon]
00000000e5359000 4K ----- [anon]
00000000e535a000 4K rw--- [anon:linker_alloc_lob]
00000000e535b000 4K r---- [anon:linker_alloc]
00000000e535c000 16K rw--- [anon:linker_alloc_small_objects]
00000000e5360000 4K r---- [anon:atexit handlers]
00000000e5361000 4K ----- [anon:thread signal stack guard page]
00000000e5362000 16K rw--- [anon:thread signal stack]
00000000e5366000 4K ----- [anon:bionic TLS guard]
00000000e5367000 12K rw--- [anon:bionic TLS]
00000000e536a000 4K ----- [anon:bionic TLS guard]
00000000e536b000 544K r-x-- /system/bin/linker
00000000e53f3000 4K rw--- [anon:arc4random data]
00000000e53f4000 8K r---- /system/bin/linker
00000000e53f6000 4K rw--- /system/bin/linker
00000000e53f7000 288K rw--- [anon]
00000000e543f000 4K r---- [anon]
00000000e5440000 24K rw--- [anon]
00000000f9bde000 136K rw--- [stack]
00000000f9c00000 102336K ----- [anon]
00000000ffff0000 4K r-x-- [vectors]
total 185516K
和diff为方便起见:
5a6
> 00000000bc7a3000 36900K rw-s- /dev/kgsl-3d0
152c153
< total 148616K
---
> total 185516K
在第二次运行时,pmap
在(1)处总计为173544K,在(2)处总计为210444K,这就是为什么我声称此输出不可靠的原因。