Chinaunix首页 | 论坛 | 博客
  • 博客访问: 396992
  • 博文数量: 78
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 940
  • 用 户 组: 普通用户
  • 注册时间: 2013-08-25 09:39
文章分类

全部博文(78)

文章存档

2016年(7)

2015年(1)

2014年(35)

2013年(35)

我的朋友

分类: Android平台

2014-03-19 17:37:30


1、 procrank

它从/proc/pid/maps中读取信息来进行统计。源码位于:/system/extras/procrank

使用命令“adb shell procrank”,该命令可以列出当前系统所有进程的内存占用情况。输出如下类似结果:

PID    Vss        Rss        Pss       Uss      cmdline

2319 42068K  42032K   13536K 7028K    com.xxx

其中:

VSS - Virtual Set Size 虚拟耗用内存(包含共享库占用的内存)

RSS - Resident Set Size 实际使用物理内存(包含共享库占用的内存)

PSS - Proportional Set Size 实际使用的物理内存(比例分配共享库占用的内存)

USS - Unique Set Size 进程独自占用的物理内存(不包含共享库占用的内存)

2、 dumpsys meminfo

使用命令:adb shell dumpsys meminfo $package_name or $pid,可更细致的查看某具体应用内存是如何使用。

3、 showmap

adb shell showmap命令也是读取smaps文件,但结果细化的具体的vm area。该命令输出的每行表示一个vm area,列出了该vm areastart addr, end addr, Vss, Rss, Pss, shared clean, shared dirty, private clean, private dirtyobjectdumpsys meminfo其实就是读取这些数据,然后分类(native, dalvik, .so map, etc.)统计生成。

 

1:通过读取/proc/meminfo文件查看memory信息,cat  /proc/meminfo

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

l  decode bitmap 的时候,尽量配置下Options,例如:inSameSize

l  Bitmap使用完以后,调用 bitmap.recycle()来释放内存

l  如果应用是基于图片的应用,尽量采用LazyLoadDymanicRecycle

l  decode bitmap 的时候,将decode代码 try catch 出来,catch oom error,避免程序crash,可以在catch里面做一些释放内存操作。


阅读(2293) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~