Java面试题更新 2026-08-03

请解释 Java 中 WeakHashMap 的概念、工作机制以及典型应用场景。

考察说明

考查对 WeakHashMap 底层实现及其弱引用语义的理解。

回答思路

  1. 【回答框架 1】WeakHashMap 是 Java 集合框架中基于哈希表的 Map 实现,其键使用 WeakReference 包装,当键对象不再被外部强引用时,该键值对会在下次 GC 时被自动清除。
  2. 【回答框架 2】底层结构类似 HashMap,但 Entry 继承 WeakReference 并持有 value 引用,通过 ReferenceQueue 在键被回收后清理过期 Entry。
  3. 【回答框架 3】典型应用包括缓存场景(如 Tomcat 的缓存)或需要避免内存泄漏的映射,但注意值可能被强引用导致无法回收。
  4. 【回答框架 4】与 HashMap 的区别在于键的回收行为,与 IdentityHashMap 的区别在于使用 equals 比较键。
  5. 【回答框架 5】线程不安全,需要外部同步;且清除操作依赖 GC,键值对可能在任何时刻消失,不适合需要确定性的场景。
  6. 【关键点 1】WeakHashMap 键使用弱引用,键无强引用时条目会被 GC 自动移除。
  7. 【关键点 2】借助 ReferenceQueue 在键被回收后清理对应 Entry。
  8. 【关键点 3】常用作缓存或辅助数据结构,但值可能意外阻止回收。
  9. 【易错点 1】误以为 WeakHashMap 保证幂等或持久性。
  10. 【易错点 2】忽略值持有键的强引用导致回收失效。
  11. 【易错点 3】在多线程环境下未同步使用。