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目标进程中动态库的函数的实现方式. 文中的源代码所有来源于网络.我仅仅是略微加以整理. 环境: ...
随机推荐
- JavaMail API 概述
JavaMail API提供了一种与平台无关和协议独立的框架来构建邮件和消息应用程序. JavaMail API提供了一组抽象类定义构成一个邮件系统的对象.它是阅读,撰写和发送电子信息的可选包(标准扩 ...
- C语言诠释--为什么内存是线性分布的。
Author:伟易达集团软件工程师 II 杨源鑫Date :2016.11.11Subject:内存为什么是线性分布的 今天有位小伙伴问了我一个问题,问题大概是这样描述的: 师兄,我如何能够 ...
- static,this,private关键字用法
1:成员变量和局部变量的区别(理解) (1)在类中的位置不同 成员变量:类中方法外 局部变量:方法定义中或者方法声明上 (2)在内存中的位置不同 成员变量:在堆中 局部变量:在栈中 (3)生命周期不同 ...
- Struts 2 标签库
<s:if>标签 拥有一个test属性,其表达式的值用来决定标签里内容是否显示 <s:if test="#request.username=='clf'"> ...
- 1QPushButton的使用,QLineEdit的使用,设置组件位置,布局(QHBoxLayout,QGridLayout)
1.新建一个空Qt项目 2 新建一个新的文件(右击项目à添加新文件) 3 配置pro文件属性 SOURCES += \ main.cpp QT += widgets gui 4 编写main.c ...
- css模块化及CSS Modules使用详解
什么是css模块化? 为了理解css模块化思想,我们首先了解下,什么是模块化,在百度百科上的解释是,在系统的结构中,模块是可组合.分解和更换的单元.模块化是一种处理复杂系统分解成为更好的可管理模块的方 ...
- android获取设备唯一标示
概述 有时需要对用户设备进行标识,所以希望能够得到一个稳定可靠并且唯一的识别码.虽然Android系统中提供了这样设备识别码,但是由于Android系统版本.厂商定制系统中的Bug等限制,稳定性和唯一 ...
- shell脚本实现冒泡排序
手动输入一行字符串,并对其排序. 脚本如下: #!/bin/bash #a test about sort echo "please input a number list" re ...
- UNIX网络编程——非阻塞connect
当在一个非阻塞的TCP套接字上调用connect时,connect将立即返回一个EINPROGRESS错误,不过已经发起的TCP三次握手继续进行.我们接着使用select检测这个连接或成功或失败的已建 ...
- SDL2源代码分析6:复制到渲染器(SDL_RenderCopy())
===================================================== SDL源代码分析系列文章列表: SDL2源代码分析1:初始化(SDL_Init()) SDL ...