- 强引用,只要有引用指向一个对象,对象就不会被回收
- 软引用,一个对象只有一个软引用指向它,当系统内存不够用的时候,会回收软引用指向的对象,内存够用不会回收它。
- 弱引用,一个对象只有一个弱引用指向它,那么就会被回收。用处在与,此时也有强引用指向那个对象时,只要强引用消失,那么这个对象就要被回收。一般用在容器。
ThreadLocal 内部用到了弱引用。
ThreadLocal<M> tl = new ThreadLocal<>();
tl.set(new M());
tl.remove(); //不需要的时候要remove,防止内存泄露
image.png
这边tl消失,指向的ThreadLocal对象会被回收
网友评论