安卓网游如何检测变化?
1.启动eclipse后,切换到DDMS透视图,确认设备视图和堆视图打开;
2.通过USB将手机与电脑链接,确保手机处于“USB调试”模式,而不是作为“海量存储”;
3.链接成功后,手机设备的序列号和设备中的一些运行过程信息会显示在DDMS的设备视图中;
4.点击选择需要监控的进程,如system _ process process
5.在设备视图界面中,单击并选择图标顶行中的“更新堆”图标;
6.单击堆视图中的“导致垃圾收集”按钮;
7.此时,您将在堆视图中看到当前所选进程的内存使用情况的详细信息。
描述:
a)点击“引起gc”按钮相当于向虚拟机请求GC操作;
b)第一次显示内存使用信息时,不需要连续点击“引起GC”,堆视图界面会定期刷新,这样在应用连续运行过程中就可以看到内存使用的变化;
c)内存使用信息的各个参数的含义,根据其名称就可以知道,这里就不赘述了。
如何才能知道自己的程序是否有内存泄漏的可能?这里需要注意一个值:堆视图中间有一个类型叫数据对象,也就是数据对象,是我们程序中大量的类类型对象。在数据对象的行中有一列“总大小”,它的值是当前进程中所有Java数据对象的总内存。一般来说,这个值的大小决定了是否会出现内存泄漏。可以这样判断:
a)不断操作当前应用程序,并注意数据对象的总大小值;
b)一般情况下,总的大小值会稳定在一个有限的范围内,也就是说,因为程序中的代码是好的,不存在对象不被垃圾回收的情况,所以虽然我们继续操作,也会继续生成很多对象,但是在虚拟机中GC的过程中,这些对象会被回收,内存占用会降到一个稳定的水平;
c)另一方面,如果代码中没有释放对象引用,数据对象的总大小值在每次GC后不会明显下降,总大小值会随着操作次数的增加而增加。
直到它达到一个上限,该进程被杀死。
d)以system_process流程为例。在我的测试环境中,system_process进程占用的内存中数据对象的总大小通常会稳定在2.2到2.8之间,当其值超过3.55时,该进程将被杀死。