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. JBOSS EAP 6 系列六 公共模块的jar配置到jboss的modules详细配置

    公司项目中遇到并要解决的问题 1:原则上除了自己写的代码之外,公共的jar不应该都在打包的时候打包到ear里面,这样的话包太大,也不符合的分层的逻辑,在jboss容器内部,每个ear的包重复jar都会 ...

  2. UISearchController替换UISearchDisplayController

    随着iOS 的升级,iOS 7的占有率更低了.Xcode 升级到Xcode 8之后,对iOS 应用支持的最低版本,iOS 7也被抛弃了.我在新项目中也是最低支持到iOS 8,因此工程里也是各种警告.首 ...

  3. activiti实战系列 排他网关(ExclusiveGateWay)

    流程图 12.2:部署流程定义+启动流程实例 12.3:查询我的个人任务 12.4:完成我的个人任务 说明: 1)     一个排他网关对应一个以上的顺序流 2)     由排他网关流出的顺序流都有个 ...

  4. Java学习之继承中的执行顺序详解

    代码块(理解) (1)用{}括起来的代码. (2)分类: A:局部代码块 用于限定变量的生命周期,及早释放,提高内存利用率. B:构造代码块 把多个构造方法中相同的代码可以放到这里,每个构造方法执行前 ...

  5. layout文件夹中activity_main.xml与fragment_main.xml文件的处理记录

    androidSDK更新到22.6后新建立项目时在layout文件夹下面出现了activity_main.xml与fragment_main.xml,这是为了在平板开发中使用碎片,但是让不需要碎片的人 ...

  6. Oracle AP Invoice APIs

     These APIs are handful when you want to do Insert, Update or Delete programmatically for some bus ...

  7. Android ListPopupWindow的使用

    其实像ListPopupWindow.PopupMenu的用法大致和PopupWindow的一样!就不讲了,相信用过PopupWindow的看一下就能明白. 先上个效果图: ListPopupWind ...

  8. java加载外部文件数据到代码中:外部数据文件放到jar包中,调用方法getResourceAsStream

    任务要将数据文件geo.txt加载进行.因为是别人写的总体项目,不能乱动位置.只能将geo.txt打包到jar中某目录.比如,放到.class文件下怎么加载:http://riddickbryant. ...

  9. Spring MVC 入门示例讲解 - howtodoinjava

    在本例中,我们将使用Spring MVC框架构建一个入门级web应用程序.Spring MVC 是Spring框架最重要的的模块之一.它以强大的Spring IoC容器为基础,并充分利用容器的特性来简 ...

  10. UNIX环境高级编程——线程同步之互斥量

    互斥量(也称为互斥锁)出自POSIX线程标准,可以用来同步同一进程中的各个线程.当然如果一个互斥量存放在多个进程共享的某个内存区中,那么还可以通过互斥量来进行进程间的同步. 互斥量,从字面上就可以知道 ...