什么时候使用WeakHashMap或WeakReference?

使用弱引用是我从未见过的实现方式,因此,我试图弄清楚它们的用例是什么以及实现将如何工作。你何时需要使用WeakHashMap或WeakReference以及如何使用它?

回答:

强引用的一个问题是缓存,尤其是对于非常大的结构(如图像)而言。假设你有一个必须处理用户提供的图像的应用程序,例如我正在使用的网站设计工具。自然地,你想缓存这些图像,因为从磁盘加载它们非常昂贵,并且你希望避免一次在内存中拥有(可能是巨大的)图像的两个副本的可能性。

因为图像缓存应该阻止我们在绝对不需要时重新加载图像,所以你将很快意识到,缓存应始终包含对内存中已存在的任何图像的引用。但是,对于普通的强引用,该引用本身将迫使图像保留在内存中,这要求你以某种方式确定何时不再需要该图像,并将其从缓存中删除,从而使其有资格进行垃圾回收。你被迫复制垃圾回收器的行为,并手动确定对象是否应该在内存中。

以上是 什么时候使用WeakHashMap或WeakReference? 的全部内容, 来源链接: utcz.com/qa/401203.html

回到顶部