当前位置:   article > 正文

Android 4.4 meminfo 实现分析_memtrack_proc_gl_pss 为负

memtrack_proc_gl_pss 为负

Android提供了一个名为meminfo的小工具帮助应用分析自身的内存占用,并且在4.4还新增了memtrack HAL模块,SoC厂商通过实现memtrack模块,让meminfo可以获取GPU相关的一些内存分配状况。了解meminfo的实现,对我们更深入了解应用的内存占用状况是很有帮助的。而这篇文章的目的就是分析Android 4.4 meminfo的内部实现源码,让开发者通过这些信息可以更了解自己应用的内存占用状况。

在控制台输入命令"adb shell dumpsys meminfo YOUR-PACKAGE-NAME",可以看到类似下图的结果:

  1. ** MEMINFO in pid 14120 [com.UCMobile.test] **
  2. Pss Private Private Swapped Heap Heap Heap
  3. Total Dirty Clean Dirty Size Alloc Free
  4. ------ ------ ------ ------ ------ ------ ------
  5. Native Heap 187886 187872 0 0 325232 174093 38594
  6. Dalvik Heap 24801 24444 0 0 41476 35899 5577
  7. Dalvik Other 700 700 0 0
  8. Stack 508 508 0 0
  9. Other dev 33564 32600 4 0
  10. .so mmap 9019 1244 7268 0
  11. .apk mmap 101 0 16 0
  12. .ttf mmap 1330 0 696 0
  13. .dex mmap 2248 0 2248 0
  14. code mmap 985 0 188 0
  15. image mmap 1182 908 12 0
  16. Other mmap 130 4 108 0
  17. Graphics 25504 25504 0 0
  18. GL 2196 2196 0 0
  19. Unknown 32476 32476 0 0
  20. TOTAL 322630 308456 10540 0 366708 209992 44171

实际的调用代码入口在android.os.Debug.java和对应的CPP文件android_os_Debug.cpp,Debug.java的getMeminfo方法实际上调用了android_os_Debug.cpp的android_os_Debug_getDirtyPagesPid方法。

  1. static void android_os_Debug_getDirtyPagesPid(JNIEnv *env, jobject clazz,
  2. jint pid, jobject object)
  3. {
  4. stats_t stats[_NUM_HEAP];
  5. memset(&stats, 0, sizeof(stats));
  6. load_maps(pid, stats);
  7. struct graphics_memory_pss graphics_me
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小丑西瓜9/article/detail/303630
推荐阅读
相关标签
  

闽ICP备14008679号