08 强引用,软引用,弱引用,虚引用的区别

vvEcho 2024-01-20 14:08:36
Categories: Tags:
  1. 强引用
    强引用一般指我们new的对象存在的引用

  2. 软引用
    软引用,指SoftReference 创建的对象指向的引用,一般在jvm内存不足时被释放;

  3. 弱引用
    弱引用,指WeakReference 创建的对象指向的引用,一般gc时都会被优先回收;

  4. 虚引用
    虚引用,是一种形同虚设的引用,主要用来跟踪对象被垃圾回收的活动
    ThreadLocal 底层用的是ThreadLocalMap,其中threadLocalMap key存的是当前线程对象的虚拟引用,value存的是对应的值;因为是虚引用,所以一定会被回收掉,但是对于threadMap现在存的就是key为null,value不为null的entry项,这个value对象的值是一个强引用,不会被回收,所以需要我们使用完threadLocl后及时remove掉,避免内存泄漏的情况;