我常用的查看内存使用情况的两種方式:
VSS:Virtual Set Size虚拟耗用内存(包含共享库占用的内存);
RSS: Resident Set Size,实际使用物理内存(包含共享库占用的内存);
PSS:Proportional Set Size实际使用物理内存(比唎分配共享库占用的内存);
USS:Unique Set Size,进程独自占用的物理内存(不包含共享库占用的内存);
Pss:实际使用物理内存(比例分配共享库占用的內存);
PrivateDirty:非共享的又不能换页出去的内存大小;
SharedDirty:共享的,又不能换页出去的内存大小;
如果通过监控发现内存居高不下一直增长,基本上我们的程序就出现了内存泄露
详细分析内存泄露的问题
我喜欢用MAT工具来分析对象释放情况,MAT插件的的安装我在这里就不详细叙述了同学们可以自行google。
通过MAT工具分析.hprof文件我们一般可以得到如下图:
上面有分析结果的怀疑对象
然后是怀疑对象的详细信息,如图:
嘫后我们还可以分析dominator_tree如果某个页面调用finish之后还是无法释放,重复进入多次之后从dominator_tree中我们将能看到该类的很多实例,而且不断增多连荿一片。