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为例:

    具体每一项代表什么,参考:http://stackoverflow.com/questions/2298208/how-to-discover-memory-usage-of-my-application-in-android#2299813,我们比较关心的是这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里面做一些释放内存操作

http://stackoverflow.com/questions/2298208/how-to-discover-memory-usage-of-my-application-in-android/2299813#2299813

转载于:https://www.cnblogs.com/keke-xiaoxiami/articles/4326128.html

【转载】adb shell dumpsys 查看内存相关推荐

  1. adb shell dumpsys meminfo 内存测试指标解析

    网上资料中有很多说明,但是没有解析的太清楚,我这里分析汇总了一下.供大家参数.学习知识,要关注细节,懂与不懂差很多的呦!我说的是薪资:). Native Heap:Native代码分配的内存,虚拟机和 ...

  2. adb shell dumpsys 命令 查看内存

    android程序内存被分为2部分:native和dalvik,dalvik就是我们平常说的java堆,我们创建的对象是在这里面分配的,而bitmap是直接在native上分配的,对于内存的限制是 n ...

  3. adb shell dumpsys 命令 查看内存是否泄露

    android程序内存被分为2部分: native和dalvik,dalvik就是我们平常说的java堆,我们创建的对象是在这里面分配的,而bitmap是直接在native上分配的,对于内存的限制是 ...

  4. Android内存泄漏查找和解决adb shell dumpsys meminfo packagement

    1.通过adb shell dumpsys meminfo packageName来查看内存使用状况 在没有打开应用的情况下,该命令返回的数据是这样的: 2.打开这个应用的MainActivity,再 ...

  5. Android M App休眠 (adb shell dumpsys usagestats)

    App休眠 在 Marshmallow 系统,Google 宣布了一个新的功能叫 App 休眠.App 休眠会阻止那些不 常用的 App(几天没有用过的 App)连接网络或者是运行任何程序直至设备充电 ...

  6. adb shell dumpsys 使用命令和来源

    一.概述 adb shell dumpsys 在Android开发中经常要用到,平时都是零碎的积累,用到什么的时候就 记录下来,最近看了一些资料,发现可以汇总所有的命令,当带某个参数的时候,就可以查看 ...

  7. 打印Activity任务栈脚本:adb shell dumpsys activity

    #!/bin/bash while [ 1 ] do echo"****************************<-----开始----->*************** ...

  8. rockchip 网络adb使用_R1通过adb shell命令查看软件版本号

    本帖最后由 scutxd 于 2019-3-11 09:59 编辑 那么尝试直接查看设备属性adb connect 192.168.2.198#ip 地址替换为你r1的地址 adb shell get ...

  9. adb shell dumpsys appops

    1 需求 获取 所有应用 所有敏感行为 调用log 获取 指定应用 所有敏感行为 调用log 获取 指定行为 所有应用 调用log 2 语法 AppOps service (appops) dump ...

最新文章

  1. PIE 支持项目介绍
  2. Hbase的基本认识
  3. HDU-4902-Nice boat
  4. SAP UI5 应用读取 CSRF token 的 HTTP head 请求逻辑解析
  5. 记一则js替换字符串的问题
  6. 在ASP.NET网站中实现带列表(其由xml文件控制生成)的视频播放
  7. linq to sql 详
  8. androidpn的学习研究(五)androidpn-client 常见BUG解决方法
  9. RAR for Linux 命令详解
  10. int 为什么是2147483647_「2147483647」当int类型超出了[-2147483648,2147483647]会发生什么? - seo实验室...
  11. 为什么所有浏览器的userAgent都带Mozilla
  12. 计算机软件资料统计表,幼儿园评估资料参考目录(中心幼儿园)
  13. 2017华为面试算法题小结
  14. 使用HTML制作简易求职表
  15. No active profile set, falling back to default profiles: default
  16. 夜莺(Nightingale)企业级监控平台
  17. 百度地图使用,以及一些api
  18. 史上最全综述:3D目标检测算法汇总!
  19. replaceAll(xxxx, File.separator); 报错character to be escaped is missing-1
  20. 一政:公务员笔试备考注意这几点

热门文章

  1. Spring加载流程源码
  2. 单向环形列表及应用场景(约瑟夫环)
  3. 电路基础知识 -- 数模信号
  4. 谷歌新作gVisor:VM容器融合技术已经到来
  5. 美链BEC合约漏洞技术分析
  6. Kafka基础知识入门
  7. 查询数据的排序的位置_简单选择排序C++实现
  8. JZOJ 1219. Num
  9. mac 当前文件夹打开终端_Mac上的这些实用你技巧,你知道几个?
  10. 求序列中第k小的数_无理数的整数部分与小数部分