强软弱虚四种引用
四种引用从上到下 依次变弱
一个对象可以同时被多种引用方式引用,当所有引用都不可达,才可以被回收
强引用:Object a=new Object 。永远不会被自动销毁,除非a = null,才会把强引用释放,宁肯抛异常OOM,也不会回收
软引用:当内存不够用,马上要抛出OOM异常时,会把软引用释放。软引用对象会一直保留到jvm存储空间耗尽之前
弱引用:每次GC都会把其弱引用释放, threadLocal 在threalLocalMap里面就是弱引用,当用户将
threadLocal=null,强引用释放,下次gc就会把弱引用也释放,threadLocal就能真正回收了
虚引用:不参与引用计数,对象生命周期不受虚引用影响,被虚引用的对象正常回收后,会将虚引用放入队列。虚引用主要作用是用户回收跟踪

