您的位置:首页 > 其它

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: