面试题答案
一键面试WeakHashMap的弱引用机制工作原理
- 键使用弱引用:在
WeakHashMap
中,键对象是通过弱引用(WeakReference
)来关联的。这意味着当键对象在系统的其他地方不再有强引用指向它时,该键对象就有可能被垃圾回收器回收。 - 垃圾回收触发:垃圾回收器在进行垃圾回收时,会识别那些只有弱引用指向的对象,并将其回收。一旦键对象被垃圾回收,
WeakHashMap
中的对应项并不会立即被移除。 - 实际移除时机:当
WeakHashMap
下一次执行get
、put
、remove
等操作时,会检查键是否已经被垃圾回收。如果键已被回收,那么对应的键值对会从WeakHashMap
中移除。
当一个键对象只有弱引用指向它时WeakHashMap
的行为
- 键值对不会立即移除:虽然键对象已符合垃圾回收条件,但
WeakHashMap
不会马上将对应的键值对删除。 - 操作时移除:直到
WeakHashMap
执行某些关键操作(如get
、put
、remove
等)时,WeakHashMap
会遍历哈希表,检查每个键是否还存在(即是否已被垃圾回收)。如果发现某个键已被回收,就会将对应的键值对从WeakHashMap
中移除。