【Android面试八股文】谈谈你对Glide框架的缓存机制设计的理解

news2024/11/15 18:37:21

文章目录

  • 一、引入缓存的目的
  • 二、Glide缓存流程
    • 2.1 Glide缓存的读取顺序
    • 2.2 Glide加载资源流程
    • 2.3 Glide 的缓存分层结构
  • 三、内存缓存原理
  • 四、存取原理
    • 4.1 取数据
    • 4.2 存数据
    • 4.3 为什么要引入软引用?
  • 五、磁盘缓存原理(DiskLruCache)
    • 5.1 磁盘缓存概述
    • 5.2 Glide磁盘缓存策略
    • 5.3 Glide磁盘缓存原理
  • 六、自定义缓存
    • 6.1 自定义内存缓存
    • 6.2 自定义磁盘缓存
    • 6.3 应用自定义缓存
    • 6.4 总结
  • 七、Glide缓存清理
    • 7.1 Glide 缓存清理方法
      • 1. 手动清理缓存
      • 2. **自动清理策略**
    • 7.2 清理缓存的注意事项
  • 八、总结(干货)

一、引入缓存的目的

  1. 减少流量消耗,加快响应速度;
  2. Bitmap 的创建/销毁比较耗内存,可能会导致频繁GC;使用缓存可以更加高效地加载 Bitmap,减少卡顿。

二、Glide缓存流程

2.1 Glide缓存的读取顺序

Glide缓存分为内存缓存磁盘缓存,其中内存缓存是由弱引用+LruCache组成。

  • 取的顺序是:弱引用、LruCache、磁盘
  • 存的顺序是:磁盘、弱引用、LruCache

在这里插入图片描述

注意:关于缓存的存取的入口在 Engine 这个类中

2.2 Glide加载资源流程

在这里插入图片描述

  • Glide使用了ActiveResources(活动缓存弱引用)+MemoryCache(内存缓存Lru算法&#x

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1923803.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

昆明高校大学智能制造实验室数字孪生可视化系统平台建设项目验收

昆明高校大学智能制造实验室的数字孪生可视化系统平台建设项目,正是在这样的背景下应运而生。项目自启动以来,便受到了校方的高度重视和大力支持。经过数月的紧张筹备和精心实施,项目团队克服了种种技术难题,成功完成了系统的开发…

华为模拟器防火墙配置实验(二)

一.实验拓扑 二.实验要求 1,DMZ区内的服务器,办公区仅能在办公时间内(9:00 - 18:00)可以访问,生产区的设备全天可以访问. 2,生产区不允许访问互联网,办公区和游客区允许…

AI绘画;盘点用stable diffusion 赚钱的10种方式!

前言 stable diffusion 是一种基于文本生成图像的深度学习模型,它可以根据任何文本输入生成逼真的图像。它利用了 CLIP ViT-L/14 文本编码器的文本嵌入和扩散模型的潜在变量,实现了高质量的图像合成。 stable diffusion 可以用于赚钱的10种方式及思路如…

论文精读(保姆级解析)——DiFaReli: Diffusion Face Relighting

前言 该论文发表在2023年ICCV上,主要针对人像重打光问题提出了一种新的方法,下面给出论文和项目链接: papergithub 摘要 提出了一种针对单张图像的重打光方法,作者提到针对非漫反射光照的处理比较困难,早期的工作主要…

三星AI产品发布会精彩回顾

2024年7月10日,三星在其新品发布会上,重磅发布了一系列围绕AI技术的创新产品。此次发布会不仅展示了三星在AI领域的深耕和探索,还在硬件设计、用户体验和生态系统构建上全面对标苹果。本文将详细回顾此次发布会的内容,解析三星如何…

从“Hello,World”谈起(C++入门)

前言 c的发展史及c能干什么不能干什么不是我们今天的重点,不在这里展开,有兴趣的朋友可以自行查阅相关资料。今天我们主要是围绕c的入门程序,写一个“hello,world”,并且围绕这个入门程序简单介绍一下c和c的一些语法&…

事务的学习

一、什么是事务 事务 是一组操作的集合,是一个不可分割的工作单位,事务会把所有的操作作为一个整体一起向系统提交或撤销请求,这些操作要么同时成功,要么同时失败 一组操作集合,不可分割,一起向系统提交/…

7.2 AQS原理

AQS 原理 概述 全称是 AbstractQueuedSynchronizer,是阻塞式锁和相关的同步器工具的框架。 特点: 用 state 属性来表示资源的状态(分独占模式和共享模式),子类需要定义如何维护这个状态,控制如何获取锁和…

Clion 使用gdbserver调试FreeSWITCH源码

1.准备环境 window安装clion安装好gdb、ssh、已经编译好的freeswitch可执行文件的docker镜像2.配置clion Settings -> Tools ->SSH Configurations Settings-Build, Execution, Deployment-Toolchains(其实设不设置都行,用默认也行的) Settings-Build, Execution, Depl…

JVM内存配置错误导致的线上服务问题

1.现象 大量用户反映不能正常使用服务,导致用户无法进行下一步工作。 2.检查 因为是休息日,初步听到这个消息的时候怀疑是自己的锅。一是因为项目刚刚进行了重构;二是对MySQL数据进行了迁移,并且对待迁移的旧数据进行了数据分析…

【qt】如何读取文件并拆分信息?

需要用到QTextStream类 还有QFile类 对于文件的读取操作我们可以统一记下如下操作: 就这三板斧 获取到文件名用文件名初始化文件对象用文件对象初始化文本流 接下来就是打开文件了 用open()来打开文件 用readLine()来读取行数据 用atEnd()来判断是否读到结尾 用split()来获取…

LabVIEW中modbusTCP怎样才能和profibusDP通信?

在LabVIEW中,Modbus TCP和Profibus DP是两种不同的工业通信协议,要实现这两者之间的通信,可以采用网关设备进行协议转换,或者通过一个中间设备(如PLC)进行数据桥接。以下是实现此通信的一些方法&#xff1a…

王牌站士Ⅵ--人工智能集成商的崛起

前言 系统集成商 (SI) 具有独特的优势,可以利用 GenAI 的变革力量。通过综合各种数据并重新定义客户获取见解和采取行动的方式,SI 可以发展成为AI 集成商,彻底改变企业的运营方式和与技术的互动方式,当然,还可以保留长…

[人工智能]对未来建筑行业的影响

作者主页: 知孤云出岫 目录 引言1. 人工智能在建筑行业的应用场景1.1 设计阶段1.2 施工阶段1.3 运营和管理 2. 关键技术2.1 机器学习2.2 计算机视觉2.3 自然语言处理2.4 大数据分析 3. 实际案例分析3.1 案例1:利用GAN生成建筑设计方案3.2 案例2:利用计算…

在ROS中控制机器人运动

一、安装Arbotix 输入指令:sudo apt install ros-noetic-arbotix 找到下载的文件:roscore,roscd arbotix 安装好后,不需要按照教程里面的操作,复制进工作空间。 二、在config中建立配置文件,control.yaml # 该文件…

了解并缓解 IP 欺骗攻击

欺骗是黑客用来未经授权访问计算机或网络的一种网络攻击,IP 欺骗是其他欺骗方法中最常见的欺骗类型。通过 IP 欺骗,攻击者可以隐藏 IP 数据包的真实来源,使攻击来源难以知晓。一旦访问网络或设备/主机,网络犯罪分子通常会挖掘其中…

给 「大模型初学者」 的 LLaMA 3 核心技术剖析

编者按: 本文旨在带领读者深入了解 LLaMA 3 的核心技术 —— 使用 RMSNorm 进行预归一化、SwiGLU 激活函数、旋转编码(RoPE)和字节对编码(BPE)算法。RMSNorm 技术让模型能够识别文本中的重点,SwiGLU 激活函…

敏捷开发笔记(第10章节)--Liskov原则(LSP)

目录 1:PDF上传链接 10.1 Liskov替换原则(LSP) 10.2 一个违反LSP的简单例子 10.6 启发式规则和习惯用法 10.7 结论 1:PDF上传链接 【免费】敏捷软件开发(原则模式与实践)资源-CSDN文库 OCP背后的主要机制是抽象(abstraction…

CSS【详解】边框 border,边框-圆角 border-radius,边框-填充 border-image,轮廓 outline

边框 border border 是以下三种边框样式的简写: border-width 边框宽度 —— 数值 px(像素),thin(细),medium(中等),thick(粗)border-style 边框线型 —— none【默认值…

数据库MySQL下载安装

MySQL下载安装地址如下: MySQL :: Download MySQL Community Server 1、下载界面 2、点击下载 3、解压记住目录 4、配置my.ini文件 未完..