Java - 使用 WeakHashMap
WeakHashMap
是一种特别的 Map
实现,它的所有键都存储在 WeakReference
中。相较于 HashMap
,WeakHashMap
与其功能基本完全一致,除了唯一一个显著的差别:如果 Java 的内存管理器不再有某个键对象的强引用,那么这个条目就会被从该 Map 中移除。
我们这样来创建一个 WeakHashMap
:
1 | HashMap map = new WeakHashMap(); |
我们可以通过引用某些对象的方式使用 WeakHashMap
来保存资源,但是同时允许这个资源在没有引用的时候被 Java 的垃圾回收器回收:
1 | System.gc(); |
所以大家普遍认为,可以通过 WeakHashMap
来解决缓存问题,因为当引用过期之后就会被丢弃。
这个类的另一种用法是创建 canonical map,你可以存储额外的属性在某个对象里面,因为当它们过期之后,WeakHashMap
的相应条目就会立马被丢弃。
关于
WeakHashMap
的使用例子,请阅读参考资料。