什么是 WeakHashMap,何时使用它?

2022-08-31 07:31:18

什么是a,什么时候应该使用它?a 和 a 有什么区别?WeakHashMapWeakHashMapHashMap


答案 1

如果没有对键对象的其他强引用,则垃圾回收器可以回收弱哈希映射中的元素,这使得它们对于缓存/查找存储很有用。

弱引用不限于这些哈希表,您可以对单个对象使用弱引用。它们对于节省资源很有用,您可以保留对某些内容的引用,但允许在没有其他内容引用它时收集它。(顺便说一句,强引用是普通的java引用)。还有一些弱引用往往不像软引用那样容易收集(在最后一个强引用消失后,软引用往往不会停留很长时间)


答案 2

正如其他人已经指出的那样,弱引用提供了一种将对象用作键的方法,而无需创建对它的强引用。这在您不想损害 JVM 对对象进行垃圾回收的能力,但仍然希望能够跟踪对象的某些方面的情况下非常有用,这使得弱引用非常适合缓存或存储有关对象的元数据。

我建议阅读“理解弱引用”(Oracle博客文章),关于Java中的强引用与弱引用。如果不了解差异,数据结构本身就没有什么意义。