弱引用,软引用

  • 强引用,只要有引用指向一个对象,对象就不会被回收
  • 软引用,一个对象只有一个软引用指向它,当系统内存不够用的时候,会回收软引用指向的对象,内存够用不会回收它。
  • 弱引用,一个对象只有一个弱引用指向它,那么就会被回收。用处在与,此时也有强引用指向那个对象时,只要强引用消失,那么这个对象就要被回收。一般用在容器。

ThreadLocal 内部用到了弱引用。

ThreadLocal tl = new ThreadLocal<>();
        tl.set(new M());
        tl.remove(); //不需要的时候要remove,防止内存泄露
image.png

这边tl消失,指向的ThreadLocal对象会被回收

你可能感兴趣的:(弱引用,软引用)