`

关于android应用内存占用查看及优化

阅读更多

第一步:

查看内存使用情况

我常用的查看内存使用情况的两种方式:

1、使用命令:adb shell dumpsys meminfo $package_name or $pid


2、

通过ddms查看

如果通过监控发现内存居高不下,一直增长,基本上我们的程序就出现了内存泄露。

第二步:

详细分析内存泄露的问题

我喜欢用MAT工具来分析对象释放情况,MAT插件的的安装我在这里就不详细叙述了,同学们可以自行google

通过MAT工具分析.hprof文件,我们一般可以得到如下图:

上面有分析结果的怀疑对象

然后是怀疑对象的详细信息,如图:

然后我们还可以分析dominator_tree,如果某个页面调用finish之后还是无法释放,重复进入多次之后,从dominator_tree中我们将能看到该类的很多实例,而且不断增多,连成一片。

如下图:

这里举一个例子,以前我们的应用中使用了ListView.addFooterView()这个方法,但没注意文档的说明:NOTE: Call this before calling setAdapter。我们为了显示不同状态的footerview,不断的动态调用ListView.addFooterView(),功能实现了而且使用时间短也不会发生crash。但是使用时间一长就必发生OOM。然后通过MAT分析,dominator_tree分析,发现里面有成片的listview无法释放,导致activity也无法释放,内存不断上涨,最终发生OOM。这也是个教训,ListView.addFooterView()这个方法一定要放在setAdapter之前调用。如果要显示不同的状态,推荐使用FooterView里面子控件的setVisibility来实现。

分享到:
评论

相关推荐

    Android内存优化杂谈

    Android内存优化是我们性能优化工作中比较重要的一环,这里其实...在这里我们不再细述PSS、USS等概念与Android应用的内存管理,如对这部分内容感兴趣,可自行阅读文末的参考文章。 内存泄露的检测与修改 内存泄露:简单

    android 二级内存缓存

    android 实现二级内存缓存,并且涵盖低内存缓存处理。使用时只需要初始化cacheManagere并且调用其中的方法即可。真正的二级缓存,减少对象的频繁创建时对CPU的消耗。提示应用响应速度以及减少内存占用!

    探讨Android内存管理

    在看这篇文章之前,需要Linux内存管理基础,推荐先学习一些Linux内存管理基础知识点,这里我们在做一些应用层的优化工作,但从底层理解一些原理性的知识点,对我们有较大帮助。 主要讨论四点内容: Android 内存管理...

    移动应用课程开发实践-基于Android的体重管理APP实现.rar

    项目的开发在Eclipse环境中进行,由于进行的是Android应用程序的开发, 由以上分析可知,Android平台的搭建需要Android SDK、Java SDK、和AVD三个软件。 本资源包含源代码、课程报告、答辩PPT等内容,仅供学习与交流...

    Android内存回收机制

    Android内存回收机制策略 1、GC 2、lowmemorykiller GC GC是java虚拟机的内存...OOM(Out Of Memory) : Android内存管理机制及优化方法(https://www.2cto.com/kf/201805/741791.html) 简言之,即应用占用的最大内存

    新版Android开发教程.rar

    � 采用了对有限内存、电池和 CPU 优化过的虚拟机 Dalvik , Android 的运行速度比想象的要快很多。 � 运营商(中国移动等)的大力支持,产业链条的热捧。 � 良好的盈利模式( 3/7 开),产业链条的各方:运营商、...

    Android项目常用图片特效处理.rar

    此外,资源中的代码均经过优化,以确保在性能和内存占用方面达到最佳效果。同时,我们还提供了详细的文档和示例代码,以帮助开发者快速上手和理解各项功能的使用方法。 总之,Android项目常用图片特效处理.rar是一...

    Android项目任务管理器源码.rar

    2. 功能强大:支持查看当前运行的所有应用进程,一键结束不必要的后台进程,释放内存空间。 3. 实时监控:动态展示CPU、内存等系统资源占用情况,帮助用户了解设备运行状况。 4. 高度可定制:提供丰富的API接口和可...

    Android性能优化来龙去脉总结

    通俗来讲,内存泄露不仅仅会造成应用内存占用过大,还会导致应用卡顿,造成不好的用户体验,至于,为什么一个“小小的”内存泄露会造成应用卡顿,我不得不拿这幅图来说说话了。 没错,这就是Android开发童鞋需要了解...

    安卓开发性能优化总结

    Android的虚拟机是基于寄存器的Dalvik,它的最大堆大小一般是16M,有的机器为24M。...如果我们的内存占用超过了一定的水平就会出现OutOfMemory的错误。 掌握OOM异常的处理,并可以对应用进行相应的优化

    Android代码-ArgusAPM

    内存分析:全面监控内存使用情况,降低内存占用 进程监控:针对多进程应用,统计进程启动情况,发现启动异常(耗电、存活率等) 文件监控:监控APP私有文件大小/变化,避免私有文件过大导致的卡顿、存储空间占用等...

    金山 Office 安卓版 WPS Office for Android 12.9.1 中文免费版.zip

    具有内存占用低、运行速度快、体积小巧、强大插件平台支持、免费提供海量在线存储空间及文档模板、支持阅读和输出PDF文件、全面兼容微软 Office 97-2010 格式(doc/docx/xls/xlsx/ppt/pptx等)独特优势。 WPS ...

    黑马程序员 安卓学院 万元哥项目经理 分享220个代码实例

    |--应用之获得占用内存大小 |--应用之通过包名开启一个应用 |--应用之隐式意图开启设置界面 |--应用启动之检查版本更新及初始化 |--延时任务的工具类 |--异常之UncaughtExceptionHandler全局捕获处理 |--异步任务...

    greenDAO:greenDAO是适用于Android的轻量级快速ORM解决方案,可将对象映射到SQLite数据库

    针对Android进行了高度优化,greenDAO提供了出色的性能,并占用了最少的内存。 主页,文档和支持链接: : 特征 greenDAO的独特功能集: 坚如磐石:greenDAO自2011年以来一直存在,并被无数著名应用程序使用 超级...

    安卓软件开发--毕业设计开题报告安卓软件文献翻译.docx

    伴随着巨大的产业需求,国内Android系统开发人才需求量也一路高涨,Android应用开发及系统开发的工程师将成为未来几年最热门最受欢迎的职业之一。Android应用程序开发工程师、Android底层开发工程师,NDK开发工程师...

    NatCorder - Video Recording_1.7.1

    NatCorder经过高度优化,以较低的内存占用量实现速度。功能包括: - 快速燃烧。NatCorder是经过高度优化的性能。 - 记录任何东西!记录所有可以渲染到纹理中的东西。无论是游戏视图,UI,相机还是纹理,...

    iTestin自动化测试录制脚本工具part2

    测试结果包括:安装时长、启动时长,CPU占用、内存占用、界面截图、Log日志,Bug原因及分析等。  2、支持基于Android的应用、手游的复杂脚本录制  全球首款支持Android系统的自动化脚本工具,采用黑盒测试,为移动...

    iTestin自动化APP脚本录制工具part1

    测试结果包括:安装时长、启动时长,CPU占用、内存占用、界面截图、Log日志,Bug原因及分析等。  2、支持基于Android的应用、手游的复杂脚本录制  全球首款支持Android系统的自动化脚本工具,采用黑盒测试,为移动...

    All-In-One Toolbox Pro 8.1.5.5.8.apk

    它有助于清理垃圾文件,释放存储空间,优化内存使用,提高手机速度,冷却手机,管理文件,处理应用程序,检测广告,检查权限,读取设备信息,进行快速设置等。多功能一体机工具箱让您的手机或平板电脑更加干净,快速...

Global site tag (gtag.js) - Google Analytics