Context
情景:
在C++中用 malloc申请内存
用申请的内存读取 模型文件
释放内存,AndroidStudio的Profiler显示内存大小不变
分析工具
adb shell dumpsys meminfo com.albertsnow.graphicdemo分析
Android Studio的profiler功能
输出形式
//仅用于数据名称演示,非本case的实际dump信息
Pss Private Private Swap Heap Heap Heap
Total Dirty Clean Dirty Size Alloc Free
------ ------ ------ ------ ------ ------ ------
Native Heap 0 0 0 0 12288 9963 2324
Dalvik Heap 0 0 0 0 4952 2971 1981
TOTAL 0 0 0 0 17240 12934 4305
Native Heap: 0
TOTAL: 0 TOTAL SWAP (KB): 0
观察结果:
malloc内存分配在Private dirty部分,release后 Heap size已经下降,但是Private Dirty并没有下降。导致进程dump出的实际占用 内存不变
额外的实验现象:
手机亮灭屏后,dirty内存会被回收
该加载逻辑在Service中,Service在独立于应用包名进程的单独进程中。但将该逻辑移到主进程中,dirty也会被回收
推测: