老字号APP内存优化-从175M到97M

本文有大招,APP内存占用从175M优化到97M,使用GIMP查看大内存图片。然后针对性优化。我相信大家对Memory Analyzer (MAT)并不陌生,但是那里面巨大的对象到底是什么,你不好奇吗?比如:

《老字号APP内存优化-从175M到97M》 APP内存占用.png

这个图里,你知道这11M是什么吗?如果你已经明白我的意思,你可以撤了!如果不能,请继续!如果你不会用mat,请看文后补充。
首先,通过list objects 查看incoming references,我们看到了这样一个东西:

《老字号APP内存优化-从175M到97M》 11M的大对象

很明显,它是一张图片,相信你也好奇,这是那张图片呢?现在GIMP登场了。请自行下载。我假设你已经下载好了,现在,我们选中这个mBuffer,然后你可以看到相关属性,在属性页,我们把这个mBuffer存储到文件里,如下图:

《老字号APP内存优化-从175M到97M》 存储mBuffer

存储的时候,你一定要选择一个路径,不要直接输入文件名,那样会存储到mat的目录去,不好找。存储的后缀必须是.data,这里,我命名为了big.data,现在,我们用GIMP打开它。

《老字号APP内存优化-从175M到97M》 用GIMP查看data数据

第一项,你需要选择下,默认是RGB,需要选为RGB Alpha,宽高你填写属性页看到的即可!然后就可以查看了。

其实,这张图是我们APP里字号页的背景!其他图则是APP里的大图,对此,我的优化方案是:APP里的大图采用565编码,小图8888,比如icon等,因为565可能会让图片变绿!!!这张背景图,我直接移到了xxxhdpi,第二次运行,然后发现这张图只占了2M内存。

以上测试是在华为6P上进行的,在大图没优化前,APP内存占用为175M(多次GC后的内存占用,另外,导出hprof文件的时候也需要多次GC,否则导出的文件可能不可用!)优化后只有97M,执行的测试用例是同一个,足见大图优化在APP开发里何其重要,平时,优化3-5M已经不易了!如果你对我写的抱有怀疑,请大胆的下载老字号APP体验,现在线上版本是未优化的,你看下在大分辨率手机上内存占用是否很大,当下次更新的时候再看看是否还占用很大即可!下面是具体的hprof文件分析图,第一张是未优化的,第二张是优化后的。足以清晰的看到内存占用,怎么样,还不快去看看,你的APP是否可以如法优化不少内存呢?

《老字号APP内存优化-从175M到97M》 未优化的截图
《老字号APP内存优化-从175M到97M》 优化后的截图

mat的使用

首先,你需要把Android Studio导出的hprof文件转换下,如果你还不会导出,那你百度吧,如果你Android环境变量没有配置,那你百度吧。假设你导出的文件是:1.hprof,现在转换:hprof-conv 1.hprof big.hprof 这个命令就可以将文件转换为big.hprof 了,然后用mat打开,弹出的窗口选第1项即可!如下图:

《老字号APP内存优化-从175M到97M》 选择分析的内容

至于本文第1张图怎么打开的,那是在override标签下点击:dominator tree出现的。如果你还有疑问,请评论,我会回复。

    原文作者:ijustyce
    原文地址: https://www.jianshu.com/p/60d6a6d0d38b
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞