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

本文共 763 字,大约阅读时间需要 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
*
*/

转载于:https://www.cnblogs.com/Free-Thinker/p/4500239.html

你可能感兴趣的文章
python使用httplib2访问REST服务的例子
查看>>
经典代码(01)
查看>>
生成ico格式图标
查看>>
并查集hdu4424
查看>>
【异常】IOException parsing XML document from class path resource [xxx.xml]
查看>>
第五周作业
查看>>
COJ 2135 Day10-例1
查看>>
jdbc之分页查询
查看>>
PHP手动环境搭建之WAMP
查看>>
COJ 1003 WZJ的数据结构(三)ST表
查看>>
sbrk and coreleft
查看>>
树型DP
查看>>
怎么在ubuntu上使用pidgin登陆QQ
查看>>
思维的惰性
查看>>
2018-2019-2 网络对抗技术 20165115 Exp3 免杀原理与实践
查看>>
【Android】学习记录<1> -- 初识ffmpeg
查看>>
定位页面元素的位置
查看>>
关于IAsyncResult接口的CompletedSynchronously属性
查看>>
Python:一篇文章掌握Numpy的基本用法
查看>>
序列化与ArrayList 的elementData的修饰关键字transient
查看>>