扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
可以使用Eclipse DDMS的Heap进行测试。
创新互联2013年开创至今,先为鹤壁等服务建站,鹤壁等地企业,进行企业商务咨询服务。为鹤壁企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。
首先,我们在DDMS的界面的设备选项中找到手机设备,可以看到它里面正在运行的进程:
点一下“Update Heap"图标,然后在Heap选项中查看我们标注的进程的内存使用情况:
点一下"Cause GC", 相当于向虚拟机执行一次GC请求,然后无需再按就可以动态的查看该应用程序的内存使用情况。
最值得关注的就是”data object“的"Total Size",它决定了是否存在内存泄露的危险。一般情况下,它都是固定在一个稳定的数值范围,如果回落非常大,或者该数值非常大,像是3.55后就会被kill掉,说明该应用程序的内存使用情况不佳,代码结构需要优化。
这是内存溢出,内存溢出的处理方法如下:
第一:不要为Context长期保存引用(要引用Context就要使得引用对象和它本身的生命周期保持一致)。
第二:如果要使用到Context,尽量使用Application Context去代替Context,因为Application Context的生命周期较长,引用情况下不会造成内存泄露问题
第三:在你不控制对象的生命周期的情况下避免在你的Activity中使用static变量。尽量使用WeakReference去代替一个static。
第四:垃圾回收器并不保证能准确回收内存,这样在使用自己需要的内容时,主要生命周期和及时释放掉不需要的对象。尽量在Activity的生命周期结束时,在onDestroy中把我们做引用的其他对象做释放,比如:cursor.close()。
修改的方法:
1. dalvik.vm.heapgrowthlimit的设置在 /system/build.prop中
2. adb remount / adb pull /system/build.prop
3. 修改build.prop文件,将dalvik.vm.heapgrowthlimit修改后,adb
pull /system/
4. chmod修改build.prop的权限。这里要注意,我开始修改的是chmod 777,后来系统起不来。ll
查看system/下文件权限,发现时744。同理: chmod
744,发现就 OK了。原来权限给高了还不行。
参考如下内容,设置内存的大小:
Android命令行提供setprop和getprop这两个命令来设置Android系统的一些属性,就比如说虚拟机堆内存大小等等。
但这两个命令必须在root权限下设置才能生效,并且必须在root权限下重启shell
操作命令如下:
[cpp] view plaincopy
adb root
adb shell setprop dalvik.vm.heapgrowthlimit 64m
adb shell setprop dalvik.vm.heapsize 192m
adb shell stop
adb shell start
adb shell getprop dalvik.vm.heapsize
切换到DDMS 界面 ,点击device下的具体的某一个进程,然后点击小虫子右边的 Update Heap,再点击右边的GC ,就可以看到应用程序占用的内存!!
id不用说了,内存容量,已用内存,剩余内存,已用百分之几,实例化对象109290个。
努力吧。骚年!
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流