跟HashMap一样,WeakHashMap也是一个哈希表。它比HashMap多出来的功能就是,存储在WeakHashMap中且没有被其他地方引用的key可以被GC回收,而如果把key保存在HashMap中,则无论这个key在其他地方有没有被引用,这个key一直驻留在JVM内存,从而产生泄漏的风险。
我们知道,对于弱引用WeakReference而言,只要发生一次GC,它内部引用的对象就会立即被GC回收。所以说WeakHashMap的key是一个weak key,把key和value放入WeakHashMap之后,如果这个key没有被其他地方引用,这对key-value以及用来保存这对key-value的entry都会被回收。而value是否被其他地方引用,不影响WeakHashMap中这个key是否被GC。
本文以图解方式分析WeakHashMap的核心实现逻辑,助你早日成为Java技术专家。
1. WeakHashMap实现总览
我们知道WeakHashMap是一个java集合工具类,主要起数据结构的作用,用于在内存中存取数据。所以,从宏观角度看WeakHashMap,它由两部分组成:
其实,Java Collection Framework中的所有集合工具类都可以这么理解,即包含2部分:数据+操作。
那么,它的数据又是由哪些东西组成呢,如图所示。