HashMap会造成内存泄露吗?什么情况?有什么解决办法呢?

1. 会的,当在一些缓存场景下,在缓存中通常会将对象作为键存储,当该对象不在被使用时,但是由于强引用的存在(map.put(对象,值)),其对应的键却无法从缓存中移除,从而导致内存泄露。
HashMap map = new HashMap();
Person person = new Person("张三",23);
map.put(person, 'haha');
如果此时对象不在被使用:person = null;
但是JVM还是不会被回收,因为它还被HashMap的键给强引用着,所以persson这个对象不会被回收。
2. 解决:
可以使用WeakHashMap,其使用的是弱引用,可以允许JVM在合适的时机回收这些键所对应的对象。

实际中使用WeakHashMap需要注意什么???[谢谢]
展开
评论