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 资源本地化与国际化

    资源包 在编写应用程序的时候,需要面对的一个问题是如何来处理与locale相关的一些信息.比如,页面上的一些静态文本就希望能够以用户习惯的语言显示.最原始的做法是将这些信息硬编码到程序中(可能是一大串 ...

  2. Android双击退出

    重写返回键 private long tempTime = 0; /** * 双击退出 */ @Override public void onBackPressed() { long firstCli ...

  3. Dynamics CRM 通过Odata创建及更新记录各类型字段的赋值方式

    CRM中通过Odata方式去创建或者更新记录时,各种类型的字段的赋值方式各不相同,这里转载一篇博文很详细的列出了各类型字段赋值方式,以供后期如有遗忘再次查询使用. http://luoyong0201 ...

  4. activiti processEngineLifecycleListener使用

    1.1.1. 前言 实际开发中,有需求如下: 第一:项目启动部署的时候,我们需要监控activiti 工作流引擎是否真正的已经实例化启动了,这里说的是工作流引擎的启动,不是流程实例的启动,对此要特别说 ...

  5. Swift基础之守卫语句guard

    本篇文章翻译自:http://ericcerney.com/swift-guard-statement/原作者:ecerney该语法为swift2.0之后添加的新特性 最开始在Apple的Platfo ...

  6. Java学习之参数传递详解

    Java中的参数传递问题: 基本类型:形式参数的改变对实际参数没有影响.在参数传递过程中,形参和实参占用了两个完全不同的内存空间. 引用类型:形式参数的改变直接影响实际参数.在参数传递的过程中,形参和 ...

  7. 2.QT中使用资源文件,程序打包

     1 程序中使用资源文件 A  一个QT空项目 B  右击项目,添加新文件 添加后的效果是 C  右击main.prc,选择"添加现有项",找到要使用的资源文件.最终的效果是: ...

  8. android文件混淆详解

    -injars  androidtest.jar[jar包所在地址]  -outjars  out[输出地址] -libraryjars    'D:\android-sdk-windows\plat ...

  9. 【java虚拟机系列】java虚拟机系列之JVM总述

    我们知道java之所以能够快速崛起一个重要的原因就是其跨平台性,而跨平台就是通过java虚拟机来完成的,java虚拟机属于java底层的知识范畴,即使你不了解也不会影响绝大部分人从事的java应用层的 ...

  10. linux内核中默认logo的具体位置

    /driver/logo/... 以下这个目录下对应的是logo的设置