开发者社区> code_xzh> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

android Native堆

简介:   Android 应用开发大家都知道可以通过DDMS来查看应用程序进程占用的内存大小;然而Native 内存并不能在虚拟堆上看到;Android系统基于Linux,这样的话其具备Linux的大多数特性;在Linux当中有不少方法可以查看进程占用的内存,可以采用图形界面工具,也可以采用命令,具体如何查看这边就不介绍了。      Android Native 内存查看:
+关注继续查看

  Android 应用开发大家都知道可以通过DDMS来查看应用程序进程占用的内存大小;然而Native 内存并不能在虚拟堆上看到;Android系统基于Linux,这样的话其具备Linux的大多数特性;在Linux当中有不少方法可以查看进程占用的内存,可以采用图形界面工具,也可以采用命令,具体如何查看这边就不介绍了。

     Android Native 内存查看:

1.首先需要确保你的PC上装了adb工具;不同平台安装相应的版本。

2.adb shell 然后通过ps 命令查看手机上的进程。

  

[html] view plain copy
  1. u0_a101   18271 174   656392 32856 ffffffff 00000000 S com.baidu.map.location  
  2. u0_a101   18286 174   654332 34288 ffffffff 00000000 S com.baidu.map.location:re  
  3. mote  
  4. u0_a58    18325 174   673716 38868 ffffffff 00000000 S com.xiaomi.channel:pushse  
  5. rvice  
  6. u0_a58    18347 174   688288 43628 ffffffff 00000000 S com.xiaomi.channel  
  7. root      18380 2     0      0     ffffffff 00000000 S kworker/0:3  
  8. u0_a11    18440 174   686980 41256 ffffffff 00000000 S com.google.process.gapps  
  9. u0_a11    18470 174   674016 36508 ffffffff 00000000 S com.google.android.gms  
  10. u0_a11    18497 174   676944 38440 ffffffff 00000000 S com.google.android.gsf.lo  
  11. gin  
  12. u0_a11    18517 174   684580 41268 ffffffff 00000000 S com.google.process.locati  
  13. on  
  14. u0_a12    18588 174   654444 32760 ffffffff 00000000 S com.miui.cloudservice  
  15. u0_a74    18623 174   838968 123264 ffffffff 00000000 R com.android.chrome  
  16. u0_i134   18654 174   747068 56468 ffffffff 00000000 S com.android.chrome:sandbo  
  17. xed_process0  
  18. u0_a23    18767 174   654368 32372 ffffffff 00000000 S com.google.android.partne  
  19. rsetup  
3.查看进程:下面以com.android.chrome为例

找到com.android.chrome 进程id是18623:在终端上输入:

[plain] view plain copy
  1. shell@android:/ $ cat /proc/18623/status  

[plain] view plain copy
  1. cat /proc/18623/status  
  2. Name:   .android.chrome  
  3. State:  S (sleeping)  
  4. Tgid:   18623  
  5. Pid:    18623  
  6. PPid:   174  
  7. TracerPid:      0  
  8. Uid:    10074   10074   10074   1007  
  9. Gid:    10074   10074   10074   1007  
  10. FDSize: 256  
  11. Groups: 1006 1015 1028 3003  
  12. VmPeak:   842864 kB  
  13. VmSize:   811216 kB  
  14. VmLck:         0 kB  
  15. VmPin:         0 kB  
  16. VmHWM:    126080 kB  
  17. <strong>VmRSS:    125484 kB</strong>  
  18. VmData:    69156 kB  
  19. VmStk:       136 kB  
  20. VmExe:         8 kB  
  21. VmLib:     68128 kB  
  22. VmPTE:       298 kB  
  23. VmSwap:        0 kB  
  24. Threads:        46  
  25. SigQ:   0/14952  
  26. SigPnd: 0000000000000000  
  27. ShdPnd: 0000000000000000  
  28. SigBlk: 0000000000001204  
  29. SigIgn: 0000000000000000  
  30. SigCgt: 00000002000094e8  
  31. CapInh: 0000000000000000  
  32. CapPrm: 0000000000000000  
  33. CapEff: 0000000000000000  
  34. CapBnd: ffffffffffffffff  
  35. Cpus_allowed:   f  
  36. Cpus_allowed_list:      0-3  
  37. voluntary_ctxt_switches:        2759  
  38. nonvoluntary_ctxt_switches:     2591  

4.分析内存

  熟悉Linux的童鞋知道proc目录下存放的是进程的各种信息;

  第三步中看到的VmRSS就是进程当前占用的实际内存。

  具体其他参数可以参考:进程信息参数详解

   

[plain] view plain copy
  1. <span style="font-size:18px">rss %ld     (24) Resident Set Size: number of pages the  
  2.                          process has in real memory.  This is just the  
  3.                          pages which count toward text, data, or stack  
  4.                          space.  This does not include pages which have not  
  5.                          been demand-loaded in, or which are swapped out.</span>  
5.ps会列出很多进程我们有时候需要直接找到对应的进程,linux大家都知道可以通过grep、或者find找到直接找到进程;

adb shell;trim版本的linux ,不直接支持这些命令;不过有个方法是通过busybox来解决;下面以查找chrome为例:

[plain] view plain copy
  1. <span style="font-size:18px">shell@android:/ $ ps | busybox grep chrome  
  2. ps | busybox grep chrome  
  3. u0_a74    18623 174   837800 125568 ffffffff 00000000 S com.android.chrome  
  4. u0_i134   18654 174   752124 55908 ffffffff 00000000 S com.android.chrome:sandbo  
  5. xed_process0</span>  

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Android 基于Web Html实现webrtc 直播 调取Native操作
Android 基于Web Html实现webrtc 直播 调取Native操作
0 0
Android 是怎么捕捉 native 异常的
Android 是怎么捕捉 native 异常的
0 0
Android Native Crash问题排查思路
Android Native Crash问题排查思路
0 0
Android H5与Native混合开发之JsBridge
Android H5与Native混合开发之JsBridge
0 0
Android自定义崩溃收集器捕获java层和native层崩溃异常日志
Android自定义崩溃收集器捕获java层和native层崩溃异常日志
0 0
Flutter如何与Native(Android)进行交互
上一篇文章Flutter混合开发:Android中如何启动Flutter中我们介绍了如何在Native(Android项目)中启动Flutter,展示Flutter页面。但是在开发过程中,很多时候并不是简单的展示一个页面即可,还会涉及到各种交互,比如传递一些消息。 本篇文章就简单介绍一下Flutter与原生Native的三种交互方式: BasicMessageChannel、MethodChannel和EventChannel。
0 0
【Android 逆向】Dalvik 函数抽取加壳 ( 类加载流程分析 | native 函数查询 | dalvik_system_DexFile.cpp#defineClassNative 函数 )
【Android 逆向】Dalvik 函数抽取加壳 ( 类加载流程分析 | native 函数查询 | dalvik_system_DexFile.cpp#defineClassNative 函数 )
0 0
【Android 逆向】ART 脱壳 ( InMemoryDexClassLoader 脱壳 | DexFile 构造函数及相关调用函数 | Android 源码中查找 native 函数 )
【Android 逆向】ART 脱壳 ( InMemoryDexClassLoader 脱壳 | DexFile 构造函数及相关调用函数 | Android 源码中查找 native 函数 )
0 0
【Android 逆向】加壳技术识别 ( 函数抽取 与 Native 化加壳的区分 | VMP 加壳与 Dex2C 加壳的区分 )
【Android 逆向】加壳技术识别 ( 函数抽取 与 Native 化加壳的区分 | VMP 加壳与 Dex2C 加壳的区分 )
0 0
【Flutter】Flutter 混合开发 ( Flutter 与 Native 通信 | Android 端实现 MethodChannel 通信 )
【Flutter】Flutter 混合开发 ( Flutter 与 Native 通信 | Android 端实现 MethodChannel 通信 )
0 0
+关注
code_xzh
对前端移动客户端技术比较擅长。著有《React Native移动开发实战》和《Kotlin入门与实战》和《Weex跨平台实战》,《React Native移动开发进阶》即将出版,正在努力完成《Flutter跨平台开发实战》
文章
问答
文章排行榜
最热
最新
相关电子书
更多
Android组件化实现
立即下载
蚂蚁聚宝Android秒级编译—— Freeline
立即下载
Android插件化:从入门到放弃
立即下载