先上资料
ref:
https://zhuanlan.zhihu.com/p/24393775?refer=hinus
https://www.jianshu.com/p/7da6f35d188a Weak & soft
https://www.jianshu.com/p/2bdfd32f8b97 PhantomReference
http://blog.csdn.net/aitangyong/article/details/39453365
引用相关
SoftReference:通过该类引用后的对象仅在虚拟机的内存不足的时候才会被回收,多用于高速缓存.
WeakReference:该类不会妨碍GC对对象的正常回收.只具有弱引用的对象拥有更短暂的生命周期。在垃圾回收器线程扫描它所管辖的内存区域的过程中,一旦发现了只具有弱引用的对象,不管当前内存空间足够与否,都会回收它的内存。不过,由于垃圾回收器是一个优先级很低的线程,因此不一定会很快发现那些只具有弱引用的对象。
PhantomReference : 这货说是用来跟踪对象什么时候被回收,可以替代finalize做一些工作。这尼玛还跟 finalize 扯上关系了,说是finalize可能不安全,为什么现在还没看明白。
ThreadLocal
https://www.jianshu.com/p/d4e5b4c2b875
前面说一大堆引用,是因为ThreadLocal里的Entry用了 WeakReference