笔记66 | eclipse/android studio/ADB查看Android应用内存使用情况

Eclipse

首先,我们在DDMS的界面的设备选项中找到手机设备,可以看到它里面正在运行的进程:

点一下“Update Heap"图标,然后在Heap选项中查看我们标注的进程的内存使用情况:

点一下"Cause GC", 相当于向虚拟机执行一次GC请求,然后无需再按就可以动态的查看该应用程序的内存使用情况。

必须是root后的手机,或者使用模拟器:

最值得关注的就是”data object“的"Total Size",它决定了是否存在内存泄露的危险。一般情况下,它都是固定在一个稳定的数值范围,如果回落非常大,或者该数值非常大,像是3.55后就会被kill掉,说明该应用程序的内存使用情况不佳,代码结构需要优化。


Android stuido

打开之后的窗口如图:

查看进程中的线程:

查看内存信息:

文件管理,可以对文件进行导入导出,真机很多操作可能需要Root权限才能进行。模拟器的话可以模拟发短信,打电话,定位等:


ADB

1. 打开终端,进入上述目录,如下图所示:

2. 输入adb shell,打开adb命令行,如下图所示:

3. 查看cpu使用情况:

输入命令: top-m10-s cpu(-m显示最大数量,-s 按指定行排序),

如下图所示:

1.  参数含义:  
2.  PID  : progress identification,应用程序ID  
3.  S    : 进程的状态,其中S表示休眠,R表示正在运行,Z表示僵死状态,N表示该进程优先值是负数  
4.  #THR : 程序当前所用的线程数  
5.  VSS  : Virtual Set Size虚拟耗用内存(包含共享库占用的内存)  
6.  RSS  : Resident Set Size实际使用物理内存(包含共享库占用的内存)  
7.  PCY  : 前台(fg)和后台(bg)进程  
8.  UID  : User Identification,用户身份ID  
9.  Name : 应用程序名称

(注意第一列的pid,使用pid值可以查看当前程序的内存使用情况。)

4. 查看指定程序内存使用情况:

输入命令:

比如查看手机安装的360安全卫士,那么实际命令应该为:

dumpsys meminfo 3253```

如下图所示:

1.  参数含义:  
2.  dalvik : dalvik使用的内存  
3.  native : native堆上的内存,指C\C++堆的内存(android 3.0以后bitmap就是放在这儿)  
4.  other  : 除了dalvik和native的内存,包含C\C++非堆内存······  
5.  Pss    : 该内存指将共享内存按比例分配到使用了共享内存的进程  
6.  heap alloc    : 已使用的内存  
7.  heap free     : 空闲的内存  
8.  share dirty   : 共享,但有不能被换页出去的内存  
9.  private dirty : 非共享,又不能被换页出去的内存(比如linux系统中为了提高分配内存速度而缓冲的小对象,即使你的进程已经退出,该内存也不会被释放)

5. 使用ctrl + c,退出adb命令行。

原文发布于微信公众号 - 项勇(xiangy_life)

原文发表时间:2018-03-15

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏乐沙弥的世界

MHA VIP切换脚本

    MHA能够在10~30秒内实现自动故障检测和故障转移,适用于对高可用性,数据完整性要求较高的场合。要做到无缝切换,还需要依赖于VIP漂移。VIP漂移比较...

743
来自专栏乐沙弥的世界

Linux下安装Apache httpd

793
来自专栏老安的博客

openstack虚拟机内文件遭破坏的急救方案

    openstack虚拟机存放于ceph存储,由于用户将系统的grub误删除,导致系统无法正常引导。现在用户要求抢救文件。

601
来自专栏云霄雨霁

并发编程包--java.util.Concurrent

1033
来自专栏LanceToBigData

linux(十三)之磁盘分区、创建文件系统、挂载

前面学习了linux的用户管理 ,感觉是不是linux的多用户多任务的系统感觉十分了解了,但是其实并不然的。你还需要了解更多。接下来给大家分享的是 在vmwar...

24910
来自专栏Linux驱动

第1阶段——uboot分析之硬件初始化start_armboot函数(5)

start_armboot()分析: 在start.S初始化后跳转到start_armboot实现第2阶段硬件相关的初始化(烧写擦除flash,网卡驱动,usb...

1695
来自专栏张戈的专栏

【 ES 私房菜】ElasticSearch 详细部署教程

Elasticsearch 是一个分布式的 RESTful 风格的搜索和数据分析引擎,能够解决不断涌现出的各种用例。本文详细介绍了elasticserch的部署...

8051
来自专栏Python中文社区

Python实现守护进程

專 欄 ❈汤英康,Python程序员,负责设计和开发大数据监控平台的相关产品。 PyCon China2016 深圳 讲师。 博客:http://blog.t...

2828
来自专栏PHP技术

LINUX软链接和硬链接

1.Linux链接概念 Linux链接分两种,一种被称为硬链接(Hard Link),另一种被称为符号链接(Symbolic Link)。默认情况下,ln命令产...

3125
来自专栏cs

linux学习笔记五

笔记摘抄自《linux操作系统基础及应用》 ---- 作业控制 正在执行的一个或者多个程序可形成一个作业。使用管道命令和重定向命令,一个作业可以启动多个进程...

2956

扫码关注云+社区