java WeakHashMap的问题

java WeakHashMap的问题

具体原因不清楚。我猜测是因为“xxx”形式时,会首先从字符串静态池中获取。当获取不到时。会new一个放入静态池。调用。

System.gc();是垃圾回收机制。强制回收。

如果直接new出来的话。此时没有被调用。就会被回收掉。

而静态池的话会保留下来。

希望可以帮你。个人拙见。

这是由于WeakHashMap自己的特性决定的

在 WeakHashMap 中,当某个键不再正常使用时,将自动移除其条目。

更精确地说,对于一个给定的键,其映射的存在并不阻止垃圾回收器对该键的丢弃,这就使该键成为可终止的,被终止,然后被回收。

丢弃某个键时,其条目从映射中有效地移除,因此,该类的行为与其他的 Map 实现有所不同。

null 值和 null 键都被支持。该类具有与 HashMap 类相似的性能特征,并具有相同的效能参数初始容量 和加载因子。