面试题答案
一键面试引用方式
- HashMap:对键(Key)和值(Value)采用强引用方式。只要HashMap对象本身在内存中可达,其内部存储的键值对就不会被垃圾回收器回收,即便这些键值对在程序的其他部分已经不再被使用。
- WeakHashMap:对键采用弱引用方式,而对值依然是强引用。当键所指向的对象除了WeakHashMap中的弱引用外,没有其他强引用指向它时,在下一次垃圾回收时,该键值对就可能被回收。
内存管理影响
- HashMap:如果使用不当,例如长时间持有大量不再使用的键值对,可能导致内存泄漏。因为只要HashMap对象一直存在,其中的键值对就无法被回收,会持续占用内存空间。
- WeakHashMap:在一定程度上有助于自动释放不再使用的键值对所占用的内存。当键对象失去其他强引用后,垃圾回收器运行时会回收该键值对,从而避免了部分内存泄漏的问题。但要注意,如果值对象有其他强引用指向,即使键被回收,值对象依然不会被回收。