容器中保某个元素,某个元素还没有被回收,还是可达的情况下,容器即使弱引用且此时GC,容器也不会被会后的。
容器中包含的元素全部被回收了且都不可达了,此时弱引用的容器对象才有可能被回收。
所以弱引用在GC的时候一定被回收也是有条件的,就是其不再持有任何强引用对象。
ThreadLocalMap entity是 弱引用,它的回收需要三个条件
1 entity内部的key 即threadLocal对象不可达
2 entity内部的value,不可达
3 此时正好GC
否则就是手动remove了