笔记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 条评论
登录 后参与评论

相关文章

来自专栏我的博客

Zend_Http之Zend_Http_Client

$client = new Zend_Http_Client(‘http://192.168.1.180/index/get’, array( ‘maxred...

36040
来自专栏IT可乐

RabbitMQ详解(三)------RabbitMQ的五种队列

  上一篇博客我们介绍了RabbitMQ消息通信中的一些基本概念,这篇博客我们介绍 RabbitMQ 的五种工作模式,这也是实际使用RabbitMQ需要重点关注...

17620
来自专栏FreeBuf

Cookiel劫持测试工具 – Cookie Injecting Tools

Cookie Injecting Tools 是一款简单的开源cookie利用工具,是Chrome浏览器上开发的一个扩展插件,能够灵活地进行SQL注入测试,编辑...

28170
来自专栏企鹅号快讯

Java Web 模板代码生成器的设计与实现

起因 项目中需要根据数据库表写很多Meta、Dao、Service代码,其中很多代码都是重复而繁琐的。因此如果有一个模板代码的生成器,就可以一定程度提高开发效率...

297100
来自专栏从零开始的linux

crontab

cron任务分两类: 系统cron: 定义在/etc/crontab 用户cron: 定义在/var/spool...

30730
来自专栏Spark学习技巧

Kafka源码系列之源码分析zookeeper在kafka的作用

浪尖的kafka源码系列以kafka0.8.2.2源码为例给大家进行讲解的。纯属个人爱好,希望大家对不足之处批评指正。 一,zookeeper在分布式集群的作...

407100
来自专栏Golang语言社区

Golang语言学习-并发

goroutine: 由GO运行环境管理的轻量级线程 channel: 有类型的管道,操作符为 <- 数据流向箭头指向的方向 使用make(chan ...

294110
来自专栏Java 技术分享

Struts2 学习之小白开始

32260
来自专栏游戏杂谈

jscript调用bat注意事项

开发的游戏项目,需要一个工具,对指定的资源进行复制、加密,然后打包。之前打包时都手工操作,复制与加密这二步分别写了几个工具(lua加密与图片资源加密是分开的),...

11130
来自专栏程序员阿凯

一条大河波浪宽 -- 数据库连接池实现

12440

扫码关注云+社区

领取腾讯云代金券