Java中WeakCache的用例是什么?

问题描述 投票:1回答:1

Java中WeakCache的用例是什么?

java caching concurrenthashmap
1个回答
0
投票

默认情况下,在Hashmap中,当发现对值的引用已被清除时,将删除相应的键。此类实质上提供了具有强引用键和弱引用值的映射。获取其引用已清除的值将为null。

假设我们要建立一个缓存,将大图像对象作为值,并将图像名称作为键。我们想选择一个适当的地图实现方案来解决该问题。

使用简单的HashMap将不是一个好选择,因为值对象可能会占用大量内存。而且,即使它们不再在我们的应用程序中使用,它们也永远不会被GC进程从缓存中回收。

理想情况下,我们希望Map实现允许垃圾回收器自动删除未使用的对象。当在我们的应用程序中任何地方都没有使用大图像对象的键时,该条目将从内存中删除。

另一种方法(弱引用键和强引用值)是WeakHashMap。当垃圾回收(GC)进程丢弃某个键时,该键的条目实际上已从映射中删除,因此该类的行为与其他Map实现有所不同。

© www.soinside.com 2019 - 2024. All rights reserved.