Skip to content

Commit 4d21969

Browse files
committed
Site updated: 2017-05-08 11:54:37
1 parent f29d354 commit 4d21969

File tree

2 files changed

+4
-4
lines changed

2 files changed

+4
-4
lines changed

2017/05/08/Glide源码解析(二):缓存机制/index.html

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,7 @@
114114
<meta property="og:description" content="本文是 Glide 源码分析系列的第二篇,主要通过分析源码总结 Glide 的缓存机制。
115115
从加载流程揭开缓存机制的面纱首先回忆一下上一篇关于 Glide 加载流程源码分析的内容,我们从 Glide.with().load().into() 这个最简单最基本的用法入手,一步步深入源码,梳理出了完整的图片加载流程。由于当时分析重点在于整体流程的把握上,所以对于缓存相关的部分都是简单带过而没有进行深入分">
116116
<meta property="og:image" content="http://o8swcawjo.bkt.clouddn.com/%E7%BC%93%E5%AD%98%E6%B5%81%E7%A8%8B.png">
117-
<meta property="og:updated_time" content="2017-05-08T03:48:22.000Z">
117+
<meta property="og:updated_time" content="2017-05-08T03:54:18.000Z">
118118
<meta name="twitter:card" content="summary">
119119
<meta name="twitter:title" content="Glide源码解析(二):缓存机制">
120120
<meta name="twitter:description" content="本文是 Glide 源码分析系列的第二篇,主要通过分析源码总结 Glide 的缓存机制。
@@ -555,7 +555,7 @@ <h3 id="BitmapPool"><a href="#BitmapPool" class="headerlink" title="BitmapPool">
555555
<p>应用运行时图片内存往往占相当大的一部分,如果这部分内存能够尽量的复用,就能够显著地减少内存的频繁申请和释放了。基于这个考虑,Glide 针对 Bitmap 设计了复用方案,这就是 BitmapPool。</p>
556556
<p>Glide 构建了一个 BitmapPool,图片的 Bitmap 的申请和释放都需要通过它来处理。需要加载新的图片时,先从 BitmapPool 中查找有没有相应大小或者稍大一点的 Bitmap,有则直接使用,没有再创建新的 Bimap。一个长列表中的图片往往是大小相同的,所以这个复用率还是相当可观的。</p>
557557
<p>BitmapPool 的最大容量与屏幕分辨率有关,默认是 宽度 Pixels*高度 Piexls*ARGB_8888图片的质量参数*4,这样至少足够缓存四个屏幕大小的图片。容量到达阈值时,使用 LRU 算法从最近最少使用的图片尺寸中移除图片。</p>
558-
<h5 id="复用策略"><a href="#复用策略" class="headerlink" title="复用策略"></a>复用策略</h5><p>BitmapPool 使用策略模式来封装不同的复用策略,策略接口是 LruPoolStrategy,定义了 put()、get()、getSize() 等方法。Glide 中有两种复用策略</p>
558+
<h4 id="复用策略"><a href="#复用策略" class="headerlink" title="复用策略"></a>复用策略</h4><p>BitmapPool 使用策略模式来封装不同的复用策略,策略接口是 LruPoolStrategy,定义了 put()、get()、getSize() 等方法。Glide 中有两种复用策略</p>
559559
<ul>
560560
<li>AttributeStrategy 复用的图片需要图片的尺寸和 Bitmap.Config 完全一致</li>
561561
<li>SizeConfigStrategy 复用要求相对宽松,复用的图片需要 Bitmap.Config 一致,但复用图片的所需内存比原图小即可。确保 Bitmap.Config 一致后,如果有内存大小一致的图片则直接复用,没有则选取内存稍大一点的图片。需要 KITKAT 以上版本</li>
@@ -774,7 +774,7 @@ <h4 id="LRU-算法实现"><a href="#LRU-算法实现" class="headerlink" title="
774774

775775

776776

777-
<div class="post-toc-content"><ol class="nav"><li class="nav-item nav-level-3"><a class="nav-link" href="#从加载流程揭开缓存机制的面纱"><span class="nav-number">1.</span> <span class="nav-text">从加载流程揭开缓存机制的面纱</span></a><ol class="nav-child"><li class="nav-item nav-level-4"><a class="nav-link" href="#发起请求前"><span class="nav-number">1.1.</span> <span class="nav-text">发起请求前</span></a></li></ol></li><li class="nav-item nav-level-3"><a class="nav-link" href="#内存缓存"><span class="nav-number">2.</span> <span class="nav-text">内存缓存</span></a><ol class="nav-child"><li class="nav-item nav-level-4"><a class="nav-link" href="#引用计数"><span class="nav-number">2.1.</span> <span class="nav-text">引用计数</span></a></li><li class="nav-item nav-level-4"><a class="nav-link" href="#LruResourceCache"><span class="nav-number">2.2.</span> <span class="nav-text">LruResourceCache</span></a></li><li class="nav-item nav-level-4"><a class="nav-link" href="#ActiveResources"><span class="nav-number">2.3.</span> <span class="nav-text">ActiveResources</span></a></li></ol></li><li class="nav-item nav-level-3"><a class="nav-link" href="#磁盘缓存"><span class="nav-number">3.</span> <span class="nav-text">磁盘缓存</span></a><ol class="nav-child"><li class="nav-item nav-level-4"><a class="nav-link" href="#DiskLruCacheWrapper"><span class="nav-number">3.1.</span> <span class="nav-text">DiskLruCacheWrapper</span></a><ol class="nav-child"><li class="nav-item nav-level-5"><a class="nav-link" href="#缓存写入"><span class="nav-number">3.1.1.</span> <span class="nav-text">缓存写入</span></a></li><li class="nav-item nav-level-5"><a class="nav-link" href="#缓存读取"><span class="nav-number">3.1.2.</span> <span class="nav-text">缓存读取</span></a></li></ol></li><li class="nav-item nav-level-4"><a class="nav-link" href="#DiskLruCache"><span class="nav-number">3.2.</span> <span class="nav-text">DiskLruCache</span></a><ol class="nav-child"><li class="nav-item nav-level-5"><a class="nav-link" href="#缓存构建"><span class="nav-number">3.2.1.</span> <span class="nav-text">缓存构建</span></a></li><li class="nav-item nav-level-5"><a class="nav-link" href="#缓存写入-1"><span class="nav-number">3.2.2.</span> <span class="nav-text">缓存写入</span></a></li><li class="nav-item nav-level-5"><a class="nav-link" href="#缓存读取-1"><span class="nav-number">3.2.3.</span> <span class="nav-text">缓存读取</span></a></li></ol></li></ol></li><li class="nav-item nav-level-3"><a class="nav-link" href="#BitmapPool"><span class="nav-number">4.</span> <span class="nav-text">BitmapPool</span></a><ol class="nav-child"><li class="nav-item nav-level-5"><a class="nav-link" href="#复用策略"><span class="nav-number">4.0.1.</span> <span class="nav-text">复用策略</span></a></li></ol></li><li class="nav-item nav-level-4"><a class="nav-link" href="#LRU-算法实现"><span class="nav-number">4.1.</span> <span class="nav-text">LRU 算法实现</span></a></li></ol></li></ol></div>
777+
<div class="post-toc-content"><ol class="nav"><li class="nav-item nav-level-3"><a class="nav-link" href="#从加载流程揭开缓存机制的面纱"><span class="nav-number">1.</span> <span class="nav-text">从加载流程揭开缓存机制的面纱</span></a><ol class="nav-child"><li class="nav-item nav-level-4"><a class="nav-link" href="#发起请求前"><span class="nav-number">1.1.</span> <span class="nav-text">发起请求前</span></a></li></ol></li><li class="nav-item nav-level-3"><a class="nav-link" href="#内存缓存"><span class="nav-number">2.</span> <span class="nav-text">内存缓存</span></a><ol class="nav-child"><li class="nav-item nav-level-4"><a class="nav-link" href="#引用计数"><span class="nav-number">2.1.</span> <span class="nav-text">引用计数</span></a></li><li class="nav-item nav-level-4"><a class="nav-link" href="#LruResourceCache"><span class="nav-number">2.2.</span> <span class="nav-text">LruResourceCache</span></a></li><li class="nav-item nav-level-4"><a class="nav-link" href="#ActiveResources"><span class="nav-number">2.3.</span> <span class="nav-text">ActiveResources</span></a></li></ol></li><li class="nav-item nav-level-3"><a class="nav-link" href="#磁盘缓存"><span class="nav-number">3.</span> <span class="nav-text">磁盘缓存</span></a><ol class="nav-child"><li class="nav-item nav-level-4"><a class="nav-link" href="#DiskLruCacheWrapper"><span class="nav-number">3.1.</span> <span class="nav-text">DiskLruCacheWrapper</span></a><ol class="nav-child"><li class="nav-item nav-level-5"><a class="nav-link" href="#缓存写入"><span class="nav-number">3.1.1.</span> <span class="nav-text">缓存写入</span></a></li><li class="nav-item nav-level-5"><a class="nav-link" href="#缓存读取"><span class="nav-number">3.1.2.</span> <span class="nav-text">缓存读取</span></a></li></ol></li><li class="nav-item nav-level-4"><a class="nav-link" href="#DiskLruCache"><span class="nav-number">3.2.</span> <span class="nav-text">DiskLruCache</span></a><ol class="nav-child"><li class="nav-item nav-level-5"><a class="nav-link" href="#缓存构建"><span class="nav-number">3.2.1.</span> <span class="nav-text">缓存构建</span></a></li><li class="nav-item nav-level-5"><a class="nav-link" href="#缓存写入-1"><span class="nav-number">3.2.2.</span> <span class="nav-text">缓存写入</span></a></li><li class="nav-item nav-level-5"><a class="nav-link" href="#缓存读取-1"><span class="nav-number">3.2.3.</span> <span class="nav-text">缓存读取</span></a></li></ol></li></ol></li><li class="nav-item nav-level-3"><a class="nav-link" href="#BitmapPool"><span class="nav-number">4.</span> <span class="nav-text">BitmapPool</span></a><ol class="nav-child"><li class="nav-item nav-level-4"><a class="nav-link" href="#复用策略"><span class="nav-number">4.1.</span> <span class="nav-text">复用策略</span></a></li><li class="nav-item nav-level-4"><a class="nav-link" href="#LRU-算法实现"><span class="nav-number">4.2.</span> <span class="nav-text">LRU 算法实现</span></a></li></ol></li></ol></div>
778778

779779

780780
</div>

css/main.css

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1705,7 +1705,7 @@ pre .javascript .function {
17051705
width: 4px;
17061706
height: 4px;
17071707
border-radius: 50%;
1708-
background: #66fff7;
1708+
background: #b86522;
17091709
}
17101710
.links-of-blogroll {
17111711
font-size: 13px;

0 commit comments

Comments
 (0)