Fresco内存管理机制学习

        最近好多人提到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内存管理机制学习_第1张图片

最后欢迎大家指正,互相交流~

Fresco的官网地址:http://frescolib.org/docs/caching.html

你可能感兴趣的:(Android)