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目标进程中动态库的函数的实现方式. 文中的源代码所有来源于网络.我仅仅是略微加以整理. 环境: ...
随机推荐
- JBOSS EAP 6 系列六 公共模块的jar配置到jboss的modules详细配置
公司项目中遇到并要解决的问题 1:原则上除了自己写的代码之外,公共的jar不应该都在打包的时候打包到ear里面,这样的话包太大,也不符合的分层的逻辑,在jboss容器内部,每个ear的包重复jar都会 ...
- UISearchController替换UISearchDisplayController
随着iOS 的升级,iOS 7的占有率更低了.Xcode 升级到Xcode 8之后,对iOS 应用支持的最低版本,iOS 7也被抛弃了.我在新项目中也是最低支持到iOS 8,因此工程里也是各种警告.首 ...
- activiti实战系列 排他网关(ExclusiveGateWay)
流程图 12.2:部署流程定义+启动流程实例 12.3:查询我的个人任务 12.4:完成我的个人任务 说明: 1) 一个排他网关对应一个以上的顺序流 2) 由排他网关流出的顺序流都有个 ...
- Java学习之继承中的执行顺序详解
代码块(理解) (1)用{}括起来的代码. (2)分类: A:局部代码块 用于限定变量的生命周期,及早释放,提高内存利用率. B:构造代码块 把多个构造方法中相同的代码可以放到这里,每个构造方法执行前 ...
- layout文件夹中activity_main.xml与fragment_main.xml文件的处理记录
androidSDK更新到22.6后新建立项目时在layout文件夹下面出现了activity_main.xml与fragment_main.xml,这是为了在平板开发中使用碎片,但是让不需要碎片的人 ...
- Oracle AP Invoice APIs
These APIs are handful when you want to do Insert, Update or Delete programmatically for some bus ...
- Android ListPopupWindow的使用
其实像ListPopupWindow.PopupMenu的用法大致和PopupWindow的一样!就不讲了,相信用过PopupWindow的看一下就能明白. 先上个效果图: ListPopupWind ...
- java加载外部文件数据到代码中:外部数据文件放到jar包中,调用方法getResourceAsStream
任务要将数据文件geo.txt加载进行.因为是别人写的总体项目,不能乱动位置.只能将geo.txt打包到jar中某目录.比如,放到.class文件下怎么加载:http://riddickbryant. ...
- Spring MVC 入门示例讲解 - howtodoinjava
在本例中,我们将使用Spring MVC框架构建一个入门级web应用程序.Spring MVC 是Spring框架最重要的的模块之一.它以强大的Spring IoC容器为基础,并充分利用容器的特性来简 ...
- UNIX环境高级编程——线程同步之互斥量
互斥量(也称为互斥锁)出自POSIX线程标准,可以用来同步同一进程中的各个线程.当然如果一个互斥量存放在多个进程共享的某个内存区中,那么还可以通过互斥量来进行进程间的同步. 互斥量,从字面上就可以知道 ...