购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

2.3 Bitmap治理

在“减少数据的加载”优化方向上,通常要进行两步:第一步是通过人工分析业务代码及堆栈,或者通过自动分析和监控机制来发现程序中低频、冗余或过大的数据;第二步是对前面分析出的数据进行优化,此时的优化方案一般都比较简单,无非就是不加载或者减少加载的数据。人工分析业务代码的通用性不高,因此不做过多介绍,这里主要针对大图片数据来讲解如何通过自动化机制来发现以及优化大图片。

对于大部分应用来说,Bitmap通常都是内存占用的大头,因为只要应用用到了图片就会用到Bitmap。从Android 8开始,Bitmap的内存占用便算在了Native内存里,而在Android 8以前的系统中,Bitmap的内存占用是算在Java内存里的,虽然目前市面上搭载Android 8以下系统的设备已经不多了,但不管是消耗Native的内存还是消耗Java的内存,对Bitmap的内存优化都是收益比较高的方向之一。

治理和优化Bitmap的关键就在于如何发现应用中使用了不合理的Bitmap,比如内存占用较大的Bitmap或者是泄漏的Bitmap,当我们发现这些异常的Bitmap后,再采用一些通用的方案,如降低图片分辨率或者质量、及时清除Bitmap的引用等,就能完成针对这些异常的Bitmap优化。想要通过自动化的机制发现异常Bitmap,我们依然需要利用Hook技术来实现。前面我们已经学习了如何在Native层的代码中使用Hook技术,这里会接着介绍可以在Java层的代码中使用的Hook技术——字节码操作。 bC7C8X63j2++rdN3jigh5ah9cgBSgR61Q/LUnwdIsnHg6um+dnlGVdeOrG5Mioi0

点击中间区域
呼出菜单
上一章
目录
下一章
×