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 Native堆的更多相关文章

  1. Android Native 代码NDK开发学习笔记

    引用:http://www.kunli.info/2011/08/21/android-native-code-study-note/ JNI,全称Java Native Interface,是用于让 ...

  2. NDK开发历程(一):android native code的调试方法

    引用:http://www.cnblogs.com/ychellboy/archive/2013/02/22/2922683.html 使用NDK在android上做开发是一件“痛并快乐着”的差事,之 ...

  3. [原]Android Native Debug

    1,安装adt插件,cdt插件2,SDK目录配置: Eclipse文件菜单选择“Window”--->“Preferences”--->“Android”--->设置“SDK Loc ...

  4. android 安装 出现Android Native Development Tools不能安装

    Software being installed: Android Native Development Tools 20.0.0.v201206242043-391819 (com.android. ...

  5. GDB + gdbserver 远程调试android native code

    原文地址:GDB + gdbserver 远程调试android native code 作者:tq08g2z 以调试模拟器中的native library code为例. Host: ubuntuT ...

  6. Android Native App自动化测试实战讲解(上)(基于python)

    1.Native App自动化测试及Appuim框架介绍 android平台提供了一个基于java语言的测试框架uiautomator,它一个测试的Java库,包含了创建UI测试的各种API和执行自动 ...

  7. Android Native App自动化测试实战讲解(下)(基于python)

    6.Appuim自动化测试框架API讲解与案例实践(三) 如图1,可以在主函数里通过TestSuite来指定执行某一个测试用例: 6.1,scroll():如图2 从图3中可以看到当前页面的所有元素r ...

  8. Android Native层异步消息处理框架

     *本文系作者工作学习总结,尚有不完善及理解不恰当之处,欢迎批评指正* 一.前言 在NuPlayer中,可以发现许多类似于下面的代码: //============================== ...

  9. Android native层动态库注射

    1.简单介绍 本文解说在Android native层.root权限下.注射动态库到目标进程,从而hook目标进程中动态库的函数的实现方式. 文中的源代码所有来源于网络.我仅仅是略微加以整理. 环境: ...

随机推荐

  1. JAVA通过继承Thread来创建线程

    创建一个线程的第二种方法是创建一个新的类,该类继承Thread类,然后创建一个该类的实例. 继承类必须重写run()方法,该方法是新线程的入口点.它也必须调用start()方法才能执行. 实例 // ...

  2. JAVA面向对象-----instanceof 关键字

    instanceof 关键字 1:快速演示instanceof Person p=new Person(); System.out.println( p instanceof Person); 2:i ...

  3. Android中三种计时器Timer、CountDownTimer、handler.postDelayed的使用

    在android开发中,我们常常需要用到计时器,倒计时多少秒后再执行相应的功能,下面我就分别来讲讲这三种常用的计时的方法. 一.CountDownTimer 该类是个抽象类,如果要使用这个类中的方法, ...

  4. SYBASE bcp用法及例子

    BCP是SYBASE公司提供专门用于数据库表一级数据备份的工具. 语法: 语法如下:(可用 bcp – 得到) 常用参数说明: -b batch_size 指定所复制的每批数据中的行数.每个批处理作为 ...

  5. Java的访问权限详解(3+1)public private protected default

    Java使用三个关键字在类的内部设定访问权限:public.private.protected.这些访问指定词(access specifier)决定了紧跟其后被定义的成员(方法或属性)可以被谁使用. ...

  6. EBS财务模块表结构

     gl_code_combinations:科目组合 字段名 含义 备注 code_combination_id 主键,科目编码ID,自动编号 segment1 分行代码 setgment2 是受 ...

  7. 关于V4L2中操作比较重要的几个命令以及一般操作流程总结

    最近在做关于摄像头测试程序相关的一些开发,主要是想要实现在摄像头采集视频的过程中,通过按键来实现拍照,然后将拍照得到的数据保存到一个文件中,通过了解V4L2的一些相关操作,原来,拍照后的数据是保存在一 ...

  8. Android开发学习之路--Activity之初体验

    环境也搭建好了,android系统也基本了解了,那么接下来就可以开始学习android开发了,相信这么学下去肯定可以把android开发学习好的,再加上时而再温故下linux下的知识,看看androi ...

  9. 公司间INVOICE的库存设置

     公司间INVOICE  库存设置信息 实施多组织支持的步骤 1. 开发组织架构 2. 定义主要分类帐 3. 定义组织 4. 定义组织间关系 5. 定义职责 6. 为职责设置业务实体配置文件选项 ...

  10. Request中Attribute 和 Parameter 的区别

    Attribute 和 Parameter 的区别 (1)HttpServletRequest类有setAttribute()方法,而没有setParameter()方法 (2)当两个Web组件之间为 ...