1、假设map里已经放了一对数据了:
key1,value12、然后有个线程取走了value1,持续强引用value1。3、没有任何引用指向key1。4、GC执行了问1:
我的理解,由于key1可回收,因此key1,value1这对数据从map中移除。是否正确?问2:
我的理解,由于value1一直被正常使用,GC应该只会回收key1对象,不会动value1的。是否正确?

解决方案 »

  1.   

    key1都被清除了,留着value还有个毛用,就好比你蛋蛋被割了,留着棍棍还有用吗
      

  2.   

    问1,如果程序没有将数据从map中移除,map本身就存在对数据的引用。虚拟机是不会主动把map中的数据移除的。
    问2,你想的太多了。
      

  3.   

    看错了,是weakHashMap,收回前面的话。不好意思。
      

  4.   

    参考
    http://www.baitouwei.com/2017/06/07/WeakHashMap-%E6%B3%A8%E6%84%8F%E4%BA%8B%E9%A1%B9/