Fresco内存管理机制学习
2016-06-24 17:06
267 查看
最近好多人提到Fresco加载网络图片的有点,当然总结的文章也铺天盖地,依然,我画了一张图来帮助自己简单记忆~
Fresco的内存管理机制,利用了Android 5.0以下版本不会GC回收的Ashem区域,极大的减小了OOM发生的概率,提高了内存利用率。
主要包含3级缓存,按照优先级逐级命中并返回。
1)找Bitmap cache中是否有图片,有则加载,否则接着找;
2)再看Encoded Memory中是否有图片,有则decode,transform 后加载图片,并将图片存储进Bitmap Cache,找不到则接着往下找;
3)下一步看Disk Cache(官网有对这个命名的解释,看完大家都明白了:Yes, we know phones don’t
have disks, but it’s too tedious to keep saying local storage
cache),有则decode,transform 后加载图片,并将图片存储进Bitmap Cache,Encoded Memory中,找不到则接着往下找;
4)最后就是终极network cache寻找,有则decode,transform 后加载图片,并将图片存储进Bitmap Cache ,Encoded Memory, Disk Cache,当然如果没有就直接加载失败了。
3种线程池处理相关操作:
1) 3个线程用于网络下载。
2) 两个线程用于磁盘操作:
本地文件的读取,磁盘缓存操作。
3)两个线程用于CPU相关的操作: 解码,转换,以及后处理等后台操作
最后欢迎大家指正,互相交流~
Fresco的官网地址:http://frescolib.org/docs/caching.html
Fresco的内存管理机制,利用了Android 5.0以下版本不会GC回收的Ashem区域,极大的减小了OOM发生的概率,提高了内存利用率。
主要包含3级缓存,按照优先级逐级命中并返回。
1)找Bitmap cache中是否有图片,有则加载,否则接着找;
2)再看Encoded Memory中是否有图片,有则decode,transform 后加载图片,并将图片存储进Bitmap Cache,找不到则接着往下找;
3)下一步看Disk Cache(官网有对这个命名的解释,看完大家都明白了:Yes, we know phones don’t
have disks, but it’s too tedious to keep saying local storage
cache),有则decode,transform 后加载图片,并将图片存储进Bitmap Cache,Encoded Memory中,找不到则接着往下找;
4)最后就是终极network cache寻找,有则decode,transform 后加载图片,并将图片存储进Bitmap Cache ,Encoded Memory, Disk Cache,当然如果没有就直接加载失败了。
3种线程池处理相关操作:
1) 3个线程用于网络下载。
2) 两个线程用于磁盘操作:
本地文件的读取,磁盘缓存操作。
3)两个线程用于CPU相关的操作: 解码,转换,以及后处理等后台操作
最后欢迎大家指正,互相交流~
Fresco的官网地址:http://frescolib.org/docs/caching.html
相关文章推荐
- 【Algothrim】动态规划实例四(Business investment)
- 使用SharedPreferences实现Activity和Service之间数据同步问题
- oracle 循环分区处理
- android动态改变桌面图标
- CFNetwork internal error
- Runtime之NSCoding的自动归档、接档
- 机器学习流行算法一览
- Calculations are rather interesting
- python 文件查找 glob
- 正则表达式(RegExp Regular Expression)基础知识
- Unity UGUI基础之Button
- 分布式系统的数据结构
- Android开发中git命令使用
- Java的位运算符详解实例——与(&)、非(~)、或(|)、异或(^)
- Qt学习(二)------实例mynotepad制作
- java构造方法
- iOS开发屏幕自动旋转与调整大小
- DedeCMS访问网站首页会自动在域名后面多出index.html的解决方法
- ssh开发web.xml必须的配置
- Unity UGUI基础之Button