"WeakReference会导致大量GC"这话是什么意思?

最近看腾讯的一本书《Android移动性能实战》里面有这样一段话不是很理解,请大家帮我分析一下

两害相权取其轻,官方建议使用LRU算法来做图片缓存,而不是之前推荐的
WeakReference,因为WeakReference会导致大量GC。原理示意图如图2-7所示。

我的疑惑有
1.弱引用根本不会影响GC,他为什么说WeakReference会导致大量GC,这个实在理解不了。
2.既然官方曾经推荐过使用弱引用,而且据我所知,Glide也使用了弱引用做缓存。那么请问弱引用和LRU分别的优势是什么。

先谢谢各位

梦里花落0921
浏览 507回答 3
3回答

翻过高山走不出你

实现LRU也不是完全没问题吧,置换的方式,就要确定缓存多大空间,大了占用内存,小了置换频率太多效率不行。所以得取个平衡也就是所谓的算法,取多少合适。而WeakReference单纯是为了解决引用避免内存泄漏的,你一旦不用了就清除好像没什么问题,但是换言之效率就会很差,而LRU就是定出一定的内存来存放图片的缓存,而WeakReference压根就没起到缓存的作用,只是避免使用者没有清除引用而导致内存泄漏。

侃侃无极

WeakReference? WeekReference?
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java