☰
Android 两层强弱内存缓存:StrongMemoryCache与WeakMemoryCache
2026/10/24 14:25:50 网站建设 项目流程

Android 两层强弱内存缓存:StrongMemoryCache与WeakMemoryCache

这两个开关并不是“两种互斥缓存策略”,而是共同组成一个两层内存缓存:

StrongMemoryCache(有容量上限、LRU、强引用) ↓ 被淘汰/替换/超大条目 WeakMemoryCache(无容量计费、弱引用、机会型命中)

默认配置为:

strongReferencesEnabled = true weakReferencesEnabled = true

源码位置:

1. 构建时的实际调用链

开发者的配置一般是:

val imageLoader = ImageLoader.Builder(context) .memoryCache { MemoryCache.Builder() .maxSizePercent(context, 0.20) .strongReferencesEnabled(true) .weakReferencesEnabled(true) .build() } .build()

MemoryCache.Builder.build()的核心逻辑可概括为:

val weakMemoryCache = if (weakReferencesEnabled) { RealWeakMemoryCache() } else { EmptyWeakMemoryCache() } val strongMemoryCache = if (strongReferencesEnabled) { RealStrongMemoryCache(maxSizeBytes, weakMemoryCache) } else { EmptyStrongMemoryCache(weakMemoryCache) } return RealMemoryCache(strongMemoryCache, weakMemoryCache)

即:

强引用开关

弱引用开关

最终效果

true

true

默认双层缓存:强 LRU + 弱引用兜底

true

false

只有有严格容量限制的强引用 LRU

false

true

只有弱引用机会缓存,不保证命中

false</

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询