内存优化的绝对大头就是 bitmap ,这篇文章中夹带了大量的关于 bitmap 的部分。
写这篇文章的初衷是因为我在学习 Glide 和 Fresco 这2个图片加载库时,其对内存缓存的处理和优化,我发现其中的知识点很多,而且还牵扯出 app 的内存优化出来了。我找的资料很多,期中有一些比较不错的,这里我记录下,方便大家学习,内存优化这块是在太重要了,而且容易混,资料也不好找
对于 Bitmap 来说,5.0 之前可以使用独立于虚拟机的共享内存,不占 app 的堆内存控件。对于 5.0 之后,Bitmap 就使用 java 堆内存优化技术了(其实还是之前的 inBitmap),所有的 Bitmap 存储在 对内存中,但是只缓存当前屏幕正在显示的 Bitmap ,屏幕滑动新的 Bitmap 使用对内存中 Bitmap 不再显示被回收的内存部分,并且不只是只使用内存空间而且 Bitmap 对象本身也是复用的。看着很好,但是有人说这个就是一厢情愿,实际效果一般。
对于共享内存可以看:
对于 bitmap 可以看:
内存管理的基础知识看:
对于内存优化的可以看:
- android app性能优化大汇总(内存性能优化)
-
Android 内存优化总结&实践
强烈建议,里面很多优秀文章的链接 - Android性能优化(四)之内存优化实战