1、首先是Heap的使用
1.1 首先将手机通过USB接口连接了eclipse之后,运行你需要分析内存的app;
如下图,选中了你的程序,然后点击画了
的 “Heap”按键;
1.2 然后再点击选项中的按键,出现了如下的画面以后再点击如下图“Cause GC”按钮
,就会获取到手机中该app运行时候的内存状态效果;
说明:当内存使用信息第一次显示以后,无须再不断的点击“Cause GC”,Heap视图界面会定时刷新,
在对应用的不断的操
作过程中就可以看到内存使用的变化
1.3分析数据
内存容量的分析如下图:
这些数据包括当前的数据对象,类对象个数,我们主要关注的是最上面的那个汇总栏(有ID的那个表格),还有下面的data object(数据对象),也就是我们的程序中大量存在的类类型的对象。
在data object一行中有一列是“Total Size”,其值就是当前进程中所有Java数据对象的内存总量,一般情况下这个值的大小决定了是否会有内存泄漏。可以这样判断:
a) 不断的操作当前应用,同时注意观察data object的Total Size值;
a) 不断的操作当前应用,同时注意观察data object的Total Size值;
b) 正常情况下Total Size值都会稳定在一个有限的范围内,也就是说由于程序中的的代码良好,没有造成对象不被垃圾回收的情况,所以说虽然我们不断的操作会不断的生成很多对象,而在虚拟机不断的进行GC的过程中,这些对象都被回收了,内存占用量会会落到一个稳定的水平;
c) 反之如果代码中存在没有释放对象引用的情况,则data object的Total Size值在每次GC后不会有明显的回落,随着操作次数的增多Total Size的值会越来越大, 直到到达一个上限后导致进程被kill掉,这就是我们不希望的!
1.4 这个工具的总结思考
在我看来也只是分析在那个app操作步骤以后会出现内存突然变大的可能而已;对于快速定位到问题所在还是不够具体;
还有可能就是我自己思考的不够。如有好的建议,请多多指点;
该文章有一些内容参考其他作者的文章,如果涉及到请联系,涉及不便,望谅解