目录介绍
01.什么是对象池02.glide哪里用到对象池03.多条件key缓存bitmap3.1 多条件key创建3.2 key值的复用04.glide对象池总结05.学以致用对象池5.1 使用场景5.2 实现步骤5.3 对象池使用5.4 项目实践分享06.对象池的容量
好消息
博客笔记大汇总【16年3月到至今】,包括Java基础及深入知识点,Android技术博客,Python学习笔记等等,还包括平时开发中遇到的bug汇总,当然也在工作之余收集了大量的面试题,长期更新维护并且修正,持续完善……开源的文件是markdown格式的!同时也开源了生活博客,从12年起,积累共计N篇[近100万字,陆续搬到网上],转载请注明出处,谢谢!链接地址:github.com/yangchong21…如果觉得好,可以star一下,谢谢!当然也欢迎提出建议,万事起于忽微,量变引起质变!
01.什么时对象池
对象池作用在某些时候,我们需要频繁使用一些临时对象,如果每次使用的时候都申请新的资源,很有可能会引发频繁的 gc 而影响应用的流畅性。这个时候如果对象有明确的生命周期,那么就可以通过定义一个对象池来高效的完成复用对象。对象池使用场景glide中对加载图片时频繁创建对象使用到了对象池。
02.glide使用对象池
glide频繁请求图片比如Glide中,每个图片请求任务,都需要用到类。若每次都需要重新new这些类,并不是很合适。而且在大量图片请求时,频繁创建和销毁这些类,可能会导致内存抖动,影响性能。Glide使用对象池的机制,对这种频繁需要创建和销毁的对象保存在一个对象池中。每次用到该对象时,就取对象池空闲的对象,并对它进行初始化操作,从而提高框架的性能。
03.多条件key缓存bitmap
3.1 多条件key创建
首先看一个简单的缓存bitmap代码,代码如下所示就简单的通过 HashMap 缓存了Bitmap资源,只有在缓存不存在时才会执行加载这个耗时操作。但是上面的缓存条件十分简单,是通过图片的名字决定的,这很大程度上满足不了实际的需求。可能会出现意想不到的问题……private final Mapcache = new HashMap