JAVA引用类型
引用类型 | 备注 | 使用场景 |
强引用 | 没有其它对象指向,会被回收 | 普通场景 |
软引用 | new SoftReference<>(),如果内存不足,垃圾回收器就会将他回收 | 用于缓存 |
弱引用 | new WeakReference<>(),垃圾回收器执行就会回收 | ThreadLocal |
虚引用 | new PhantReference<>(),创建一下虚引用的对象,它需要一个队列,当虚引用执行的对象回收后,虚引用对应队列的位置会打一个标记,让jvm回收时,告诉操作系统取回收堆外内存 | 堆外内存 |
TheadLocal
使用场景:
1.复杂的参数传递
2.事务处理:保证同一个线程使用相同的连接
结构
类似于大key(线程id) + 小key(this, 指向TheadLocal对象,弱引用) + value(存储的值)
ThreadLocal<String> tl = new ThreadLocal<>();
tl.set("mingji"); //设置value
tl.remove(); //先删除value的值,不然会导致内存泄漏
tl = null; //设置变量为null,这样key对应的对象才能被删除