java中四种引用的基本概念和作用
ThreadLocal
spring的声明式事务会使用到,保证当前线程中数据库连接是同一个连接
强引用
只要一对象有强引用,垃圾回收机制不会回收
软引用
在内存不够用时,会优先回收只有软引用的内存空间,主要是做缓存用
弱引用
只要是触发垃圾回收机制进行回收,只具有弱引用的对象就会被回收
- tomcat中就是使用的弱应用
- ThreadLocal也是使用弱应用
weakhashmap
虚引用
主要是管理堆外内存的,主要是给写jvm的使用
主要检测队列配合使用,虚引用API无法get到值,主要是通知对象已经被回收,去清理堆外的内存
引用类型 | 被垃圾回收时间 | 用途 | 生存时间 |
---|---|---|---|
强引用 | 从来不会 | 对象的一般状态 | JVM停止运行时终止 |
软引用 | 当内存不足时 | 对象缓存 | 内存不足时终止 |
弱引用 | 正常垃圾回收时 | 对象缓存 | 垃圾回收后终止 |
虚引用 | 正常垃圾回收时 | 跟踪对象的垃圾回收 | 垃圾回收后终止 |
知白守黑,和光同尘