博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
adb shell dumpsys 命令 查看内存
阅读量:6076 次
发布时间:2019-06-20

本文共 707 字,大约阅读时间需要 2 分钟。

android程序内存被分为2部分:native和dalvik,dalvik就是我们平常说的java堆,我们创建的对象是在这里面分配的,而bitmap是直接在native上分配的,对于内存的限制是 native+dalvik 不能超过最大限制。android程序内存一般限制在16M,当然也有24M的。

      用以下命令可以查看程序的内存使用情况:

      adb shell dumpsys meminfo $package_name or $pid    //使用程序的包名或者进程id

      用com.tencent.qqpimsecure为例:

 

 

 

    具体每一项代表什么,参考:,我们比较关心的是这2行:

 

 

 

      其中size是需要的内存,而allocated是分配了的内存,对应的2列分别是native和dalvik,当总数也就是total这一列超过单个程序内存的最大限制时,OOM就很有可能会出现了。

多数时候,发生OOM 都是在做一些跟图片相关的操作,以下提出一些建议尽量可以减少这种情况的发生:

 

  1.decode bitmap 的时候,尽量配置下Options,例如:inSameSize
  2.Bitmap使用完以后,调用 bitmap.recycle()来释放内存
  3.如果应用是基于图片的应用,尽量采用LazyLoad和DymanicRecycle
  4.decode bitmap 的时候,将decode代码 try catch 出来,catch oom error,避免程序crash,可以在catch里面做一些释放内存操作

 

 

 /**

* @author 张兴业
* 邮箱:
* android开发进阶群:278401545
*
*/

转载地址:http://hfxgx.baihongyu.com/

你可能感兴趣的文章
【linux下c语言服务器开发系列1】多进程处理多客户端的连接
查看>>
线性表的顺序存储结构
查看>>
初识centos7与centos6的区别
查看>>
批量部署管理服务器的成熟方案Puppet,Func,cfengine汇总贴
查看>>
spring aop 嵌套调用的问题 (同一方法内调用切面切不到)
查看>>
CentOS6 安装Redis
查看>>
Linux手动导入导出Mysql数据库
查看>>
是不是只有在我有钱的时候你才会爱我
查看>>
wuzhicms查找:当前页面使用的哪个文件
查看>>
oracle FIND_IN_SET函数
查看>>
IOS 单例方法的建立
查看>>
Ubuntu下搭建Apache+MySQL+PHP开发环境
查看>>
使用U盘安装Kali的曲折经历
查看>>
Mybatis增删改查之Oracle
查看>>
symfony中不加载layout.php模板
查看>>
构建高可用服务器之三 Keepalive冗余Mysql
查看>>
编程里面的耗时更新任务需要进度
查看>>
ELK调优
查看>>
【码云周刊第 64 期】盘点那些脑洞大开的地图“黑科技”
查看>>
用 TClientDataSet 创建 XML 文件的过程 - 回复"丁永其"的问题
查看>>