测量Android上OpenCl使用的内存

时间:2019-07-17 15:38:49

标签: android android-ndk opencl

tl; dr

我想测量在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,这就是为什么我声称此输出不可靠的原因。

0 个答案:

没有答案