android Native堆
Android 应用开发大家都知道可以通过DDMS来查看应用程序进程占用的内存大小;然而Native
内存并不能在虚拟堆上看到;Android系统基于Linux,这样的话其具备Linux的大多数特性;在Linux当中有不少方法可以查看进程占用的内存,可以采用图形界面工具,也可以采用命令,具体如何查看这边就不介绍了。
Android Native 内存查看:
1.首先需要确保你的PC上装了adb工具;不同平台安装相应的版本。
2.adb shell 然后通过ps 命令查看手机上的进程。
- u0_a101 18271 174 656392 32856 ffffffff 00000000 S com.baidu.map.location
- u0_a101 18286 174 654332 34288 ffffffff 00000000 S com.baidu.map.location:re
- mote
- u0_a58 18325 174 673716 38868 ffffffff 00000000 S com.xiaomi.channel:pushse
- rvice
- u0_a58 18347 174 688288 43628 ffffffff 00000000 S com.xiaomi.channel
- root 18380 2 0 0 ffffffff 00000000 S kworker/0:3
- u0_a11 18440 174 686980 41256 ffffffff 00000000 S com.google.process.gapps
- u0_a11 18470 174 674016 36508 ffffffff 00000000 S com.google.android.gms
- u0_a11 18497 174 676944 38440 ffffffff 00000000 S com.google.android.gsf.lo
- gin
- u0_a11 18517 174 684580 41268 ffffffff 00000000 S com.google.process.locati
- on
- u0_a12 18588 174 654444 32760 ffffffff 00000000 S com.miui.cloudservice
- u0_a74 18623 174 838968 123264 ffffffff 00000000 R com.android.chrome
- u0_i134 18654 174 747068 56468 ffffffff 00000000 S com.android.chrome:sandbo
- xed_process0
- u0_a23 18767 174 654368 32372 ffffffff 00000000 S com.google.android.partne
- rsetup
3.查看进程:下面以com.android.chrome为例
找到com.android.chrome 进程id是18623:在终端上输入:
- shell@android:/ $ cat /proc/18623/status
- cat /proc/18623/status
- Name: .android.chrome
- State: S (sleeping)
- Tgid: 18623
- Pid: 18623
- PPid: 174
- TracerPid: 0
- Uid: 10074 10074 10074 1007
- Gid: 10074 10074 10074 1007
- FDSize: 256
- Groups: 1006 1015 1028 3003
- VmPeak: 842864 kB
- VmSize: 811216 kB
- VmLck: 0 kB
- VmPin: 0 kB
- VmHWM: 126080 kB
- <strong>VmRSS: 125484 kB</strong>
- VmData: 69156 kB
- VmStk: 136 kB
- VmExe: 8 kB
- VmLib: 68128 kB
- VmPTE: 298 kB
- VmSwap: 0 kB
- Threads: 46
- SigQ: 0/14952
- SigPnd: 0000000000000000
- ShdPnd: 0000000000000000
- SigBlk: 0000000000001204
- SigIgn: 0000000000000000
- SigCgt: 00000002000094e8
- CapInh: 0000000000000000
- CapPrm: 0000000000000000
- CapEff: 0000000000000000
- CapBnd: ffffffffffffffff
- Cpus_allowed: f
- Cpus_allowed_list: 0-3
- voluntary_ctxt_switches: 2759
- nonvoluntary_ctxt_switches: 2591
4.分析内存
熟悉Linux的童鞋知道proc目录下存放的是进程的各种信息;
第三步中看到的VmRSS就是进程当前占用的实际内存。
具体其他参数可以参考:进程信息参数详解
- <span style="font-size:18px">rss %ld (24) Resident Set Size: number of pages the
- process has in real memory. This is just the
- pages which count toward text, data, or stack
- space. This does not include pages which have not
- been demand-loaded in, or which are swapped out.</span>
5.ps会列出很多进程我们有时候需要直接找到对应的进程,linux大家都知道可以通过grep、或者find找到直接找到进程;
adb shell;trim版本的linux ,不直接支持这些命令;不过有个方法是通过busybox来解决;下面以查找chrome为例:
- <span style="font-size:18px">shell@android:/ $ ps | busybox grep chrome
- ps | busybox grep chrome
- u0_a74 18623 174 837800 125568 ffffffff 00000000 S com.android.chrome
- u0_i134 18654 174 752124 55908 ffffffff 00000000 S com.android.chrome:sandbo
- xed_process0</span>
android Native堆的更多相关文章
- Android Native 代码NDK开发学习笔记
引用:http://www.kunli.info/2011/08/21/android-native-code-study-note/ JNI,全称Java Native Interface,是用于让 ...
- NDK开发历程(一):android native code的调试方法
引用:http://www.cnblogs.com/ychellboy/archive/2013/02/22/2922683.html 使用NDK在android上做开发是一件“痛并快乐着”的差事,之 ...
- [原]Android Native Debug
1,安装adt插件,cdt插件2,SDK目录配置: Eclipse文件菜单选择“Window”--->“Preferences”--->“Android”--->设置“SDK Loc ...
- android 安装 出现Android Native Development Tools不能安装
Software being installed: Android Native Development Tools 20.0.0.v201206242043-391819 (com.android. ...
- GDB + gdbserver 远程调试android native code
原文地址:GDB + gdbserver 远程调试android native code 作者:tq08g2z 以调试模拟器中的native library code为例. Host: ubuntuT ...
- Android Native App自动化测试实战讲解(上)(基于python)
1.Native App自动化测试及Appuim框架介绍 android平台提供了一个基于java语言的测试框架uiautomator,它一个测试的Java库,包含了创建UI测试的各种API和执行自动 ...
- Android Native App自动化测试实战讲解(下)(基于python)
6.Appuim自动化测试框架API讲解与案例实践(三) 如图1,可以在主函数里通过TestSuite来指定执行某一个测试用例: 6.1,scroll():如图2 从图3中可以看到当前页面的所有元素r ...
- Android Native层异步消息处理框架
*本文系作者工作学习总结,尚有不完善及理解不恰当之处,欢迎批评指正* 一.前言 在NuPlayer中,可以发现许多类似于下面的代码: //============================== ...
- Android native层动态库注射
1.简单介绍 本文解说在Android native层.root权限下.注射动态库到目标进程,从而hook目标进程中动态库的函数的实现方式. 文中的源代码所有来源于网络.我仅仅是略微加以整理. 环境: ...
随机推荐
- Ribbon WorkBench 当ValueRule的值为空时的设置
在定制Ribbon按钮的规则的时候,有时需要根据某个字段值是否为空不设定Ribbon按钮的Display rules或Enable Rules,根据Crm的版本的不同,设置有所差别: 对于Dynami ...
- [error]configure: error: You need a C++ compiler for C++ support.
安装pcre包的时候提示缺少c++编译器 解决办法 使用yum安装 yum -y install gcc-c++ 本文出自 "orangleliu笔记本"博客,转载请务必保留此出处 ...
- zk日常运维管理
清理数据目录 dataDir目录指定了ZK的数据目录,用于存储ZK的快照文件(snapshot).另外,默认情况下,ZK的事务日志也会存储在这个目录中.在完成若干次事务日志之后(在ZK中,凡是对数据有 ...
- java之IO流详解(二)
好了,昨天讲了字节流,现在我们就来讲字符流吧... 字符流可以这样理解,字符流 = 字节流 + 编码表,目的是为了更好的操作中文字符(注:字符流只可以可以操作字符类型的文件,不能操作影音图像文件,要操 ...
- Markdown-----Markdown使用文档
最近才接触Markdown,为了快速记忆,整理了这个文档,欢迎补充. Markdown和扩展Markdown简洁的语法 代码块高亮 图片链接和图片上传 LaTex数学公式 UML序列图和流程图 离线写 ...
- 使用Fresco实现简单的显示一张图片
使用Fresco实现显示一张图片 仅仅是下载一张图片,在下载完之前,先显示一张站位图 效果图 源码 下载地址(Android Studio工程):http://download.csdn.net/de ...
- 如何将Ubuntu部署到U盘中,用U盘安装linux操作系统
http://jingyan.baidu.com/article/d5c4b52be79960da560dc59f.html 用U盘装一个linux系统是非常简单的事情,不会就看看这篇文章吧,后期我会 ...
- JDBC编程-优化程序(六)
首先完成DTO类的编写 DTO类是data tranfer object也就是数据传输类,DTO主要用于数据的传输操作,其中包含属性值,以及构造方法和getter ,setter方法等,不会包含业务逻 ...
- API创建/更新员工薪水
DECLARE lb_inv_next_sal_date_warning BOOLEAN; lb_proposed_salary_warning BOOLEAN; lb_approved_warnin ...
- 让 Google Test 出错时断点
Google Test 缺省是出错退出. 如果最后的出错行在系统库中,那就没什么帮助. 如果是调试运行,直接退出根本就不知道哪里出错了. 后来添加了一个运行参数: --gtest_break_on_f ...