作家
登录

Android中内存优化的那些事 - 一个有关图片的优化记录

作者: 来源: 2017-04-27 15:02:10 阅读 我要评论

客服群里叫唤着:这个用户图片不显示了,那个用户图片也不显示了。我拿着手上一切正常的测试机,what the hell……

默默地打开bugly。

 

满园春色关不住,遍地内存溢出来!是的,又闯祸了!

内存问题永远是既陌生又熟悉的话题,并且大年夜多半都产生在一个叫感化户家的手机上。安卓体系本身赓续的在优化,三方框架也逐渐成熟,外加手机厂商的大年夜内存加持,似乎内存问题变得少见,但照样不克不及忽视。

借着此次修复内存问题的记录,分享一些“自认为”的解决思路,仅供参考。ok,let’s go!

修复问题的三部曲,先复现,再定位,最后修复。

估计有的人会说,异常现象都在那,有啥好复现的,冲绝代码直接开干。

复现

修复bug永远是个惊心动魄的事,稍微一不当心就有可能天崩地裂。不是修复不完全,就是惹人新问题。大年夜原由开端懂得全部启事,一方面能加深对问题的懂得,同时确保最终能验证问题是否获得修复。

内存的问题经常产生在一些比较特别的情况下,并且很多时刻不必定是必现,往往表如今一些中低端机型上。所以大年夜机型上入手可能会是一个不错的选择。

定位

经由过程以上优化方法,同样的机型再次检测,内存占用下来了....

知道问题若何复现,接下来就是定位问题到底出在哪。平日内存的问题,会碰抵站种情况:

  1. 内存聚积:因为间谍作况造成的页面封闭但资本还漏掉在内存中。
  2. 内存高占用:因为营业须要或者应用欠妥导致内存占用量过高。

我们先来看看此次的问题属于哪种情况。

在Android Studio2.3及之前版本上自带的Android monitor中,可以直不雅的反竽暌功出当前应用的┞符体内存应用程度。[若何应用对象的分享估计大年夜家都看腻了,此次就不再反复了。

之前为了在图片上显示文字但又不想被图案所影响,所以在膳绫擎加一层暗影蒙版来包管字体的显示效不雅。习惯用fresco:overlayImage的办法来实现。但这种实现方法会造成蒙版本身是一个自力的内存资本。

142MB!!!!进入变乱现场之前就已经被占用了这么多内存。难怪之后会内存异常。看来此次要先解决内存高占用的问题,我们先要具体的懂得内存的具体情况,才知道大年夜哪下手去解决,无论是避免无意义的应用或者优化须要的┞芳用。

先强迫gc一下,然后dump java heap,看一下整体内存里的情况,按照shallow size排序。

首当其冲的byte数组映入眼帘,大年夜家都明白的,bitmap一向都是大年夜客户。我们接着分析下byte[]中的各个对象。

大年夜数据上看,有很多大年夜小雷同的内存应用,大年夜理论上看竽暌功该是有很多尺寸雷同的图片。可为什么会有这么多呢?是雷同的图片反复了?or other?

所谓耳听为虚目击为实,如不雅能看到这些图片长什么样,是否就轻易做出对应的断定了?来,开端行动:

来自Gracker的Android内存优化之三:打开MAT中的Bitmap原图 | Performance。

感激Gracker的分享,Get到一个新技能。具体流程拜见传送门。主体思路就是经由过程MAT将对应的byte数组另存为图片原始文件,再用对应的对象打开预览即可。不过我记得以前Android Studio是可以直接看的,可如今不知道跑哪了。

步调一:

临时解决筹划:

因为Android Studio dump出来的文件mat是无法直接打开的,所以须要做一次转换。在Captures中找到方才dump出来的prof文件。右键 -> Export to standar .hprof 即可。

最终,经由过程bugly查到了对应的问题机型及体系版本,上各类云测平台找到了台云测试机。按照进入问题页面的几个固定流程,反复履行,最终锁定了复现流程。

步调二:

经由过程MAT Eclipse Memory Analyzer Open Source Project 打开。

步调三:

右键想要查看的对象 -> Copy -> Save Value To File。保存为xxx.data。他推荐应用Gracker分享中的gimp。Photoshop不肯定是不是我应用方法有问题,在验证的时刻一向无法正常显示。

步调四:

查看对应图片的相干属性,主体是要宽高,因为上一步中保存的是图片的原始格局文件,个中不包含对应的参数信息,所以在导入gimp中须要指定对应的参数。


  推荐阅读

  为什么非全站升级HTTPS不可?

进级HTTPS已经是大年夜势所趋,但如有大年夜量互联网企业迟疑是否要全站进级HTTPS,本文梳理了全站进级HTTPS与部分进级HTTPS的好坏势比较,来断定是否真的有须要进行全站HTTPS进级。HTTPS>>>详细阅读


本文标题:Android中内存优化的那些事 - 一个有关图片的优化记录

地址:http://www.17bianji.com/lsqh/35002.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)