Android检测App的内存占用和泄漏

这次问题使我明白,别以为Android程序是基于Java 语言,有强大的垃圾回收机制,就完全不用担心内存问题,其实Android程序也要特别小心你的内存,因为毕竟手机不比PC机,内存是极其有限的,在内存 不够的时候,系统随时会Kill掉你的程序。目前我所了解到的,容易发生内存问题的地方如下:

 

(1) 操作Bitmap对象,一定要注意,在不使用的时候 recycle

 

(2) 访问数据库,一定要记得关闭游标

 

(3) 涉及JNI层的代码,由于JNI层是采用C/C++编写,需要自己管理内存的分配/回收,所以要慎重小心。

 

那么,Android开发中,有什么有效的方法可以检测内存使用情况以及内存泄漏呢?

 

这里主要介绍三种方法:

 

1. 程序的Log信息

 

程序在进行垃圾回收的时候,会打印一条Log信息(logcat窗口),例如:

 

1
D/dalvikvm(9050): GC_CONCURRENT freed 2049K,65% free 3571K/9991K, external 4703K/5261K, paused 2ms+2ms

 

注意这条信息中的“ 3571K/9991K”值,这代表着程序使用的heap大小,如果这个值一直在增加,而从来不减小,那么就代表着你的程序存在着内存泄漏。

 

2. DDMS的Heap信息

 

Eclipse开发环境还提供了一种更加直观的方法来查看App的Heap信息,操作方式如下:

 

 

(1)  连接手机,运行程序,假设是 com.ticktick.test 程序

 

(2)  点击DDMS按钮,在左侧的Device窗口选中你要检测的程序(com.ticktick.test )

 

(3)  点击Device窗口工具栏的第二个图标(Update Heap),

 

(4)  点击右边的窗口的Cause GC按钮,即可得到当前程序的Heap信息

 

同样,随着程序的运行,多次点击得到的Heap大小,如果只增不减的话,也昭示着你的程序有内存泄漏。

 

3.  adb命令查看内存信息

 

其实,最全面最简单的方式还是用adb命令来查看程序的内存占用和内存泄漏情况,打开命令行窗口,adb命令的格式如下:

 

1
adb shell dumpsys meminfo <package_name>


   其中,package_name 也可以换成程序的pid,pid可以通过 adb shell top | grep app_name 来查找,在命令行窗口运行上述命令,得到的我的 com.ticktick.test 程序的内存情况如下所示:

 

 

这里得到的信息非常多,重点关注如下几个字段:

 

(1) Native/Dalvik 的 Heap 信息

 

具体在上面的第一行和第二行,它分别给出的是JNI层和Java层的内存分配情况,如果发现这个值一直增长,则代表程序可能出现了内存泄漏。

 

(2) Total 的 PSS 信息

 

这个值就是你的应用真正占据的内存大小,通过这个信息,你可以轻松判别手机中哪些程序占内存比较大了。

 

4.   总结

 

关 于Android开发中内存的使用情况和内存泄漏的检测就简单介绍到这里,基本上用以上三种方式都能够定位内存泄漏问题,平时在使用Bitmap,数据库 和JNI层C/C++编程的时候,注意一点就行。另外,如果想深入了解文中的一些详细内容,可以参考Google官方提供的两篇文章,它们有着更详细的论 述《Investigating Your RAM Usage》,《Managing Your App Memory》,有任何疑问或者不清楚的地方,欢迎留言或者来信lujun.hust@gmail.com交流。

 

 

文章来自  http://www.soshow.org/html/73/n-52373.html

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android内存占用分析app是一种可以帮助用户分析Android设备中应用程序内存使用情况的工具。在Android系统中,内存管理是非常重要的,合理使用和优化内存资源对于提升设备性能和应用程序的流畅运行至关重要。 这类内存占用分析app通常具有以下功能: 1.内存监控:能够监控应用程序在运行过程中的内存使用情况,包括内存使用量、分配的内存内存泄漏等。通过实时监测和统计,用户可以清晰地了解到每个应用程序所占用内存资源。 2.内存分析:能够对应用程序进行内存分析,找出存在的内存泄漏或者大量内存占用的问题。通过分析内存分配、内存回收等信息,为用户提供关于内存使用情况的详细报告和建议。 3.进程管理:可以显示当前设备上运行的应用程序进程,并提供关闭进程、释放内存的功能。用户可以根据应用程序的内存占用情况来决定是否关闭某个进程以释放内存资源。 4.优化建议:根据内存分析结果,内存占用分析app还可以提供优化建议,帮助用户合理分配内存资源,减少应用程序的内存占用,提高设备性能和应用程序的响应速度。 总之,这类Android内存占用分析app可以帮助用户全面了解和分析应用程序的内存使用情况,以及找出存在的问题并提供优化建议。通过合理使用和优化内存资源,可以提升设备性能、提高应用程序的运行效率,使用户获得更好的使用体验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值