正如很多人所做的那样,我使用Map和SoftReference创建图像缓存来缓存下载的图像。
在我的实现中,最新使用的位图将被放置在Map的第一个元素上,因此,当图像缓存达到最大缓存大小时,将删除长时间未使用的Map的最后一个元素,并且SoftReference确保位图将被回收。
问题在于:如何在回收时确保删除的位图没有被使用(例如,在屏幕上绘图等)。如果正在使用位图,请问SoftReference gc吗?很难理解“可达性”在the api doc中的意义。
提前致谢!
答案 0 :(得分:1)
如果它被缓存SoftReference之外的其他东西使用,那么它当然与硬引用(即任何变量或类成员)一起使用。然后GC不会回收它。