java的四种引用类型
一.
前段时间在学习threadlocal接触到了weakhashmap,从这里才开始了解到java的四种引用类型。过了许多天。今天在看jdk的动态代理又见到了与引用类型相关的weakcache,却发现自己对四种引用类型的记忆有些模糊,于是决定今天把它记下来。
二.
java的四种引用分别为
1)强引用:也就是我们平常最多使用的引用类型例如string str=“实例”,其中str对“实例”的引用就是强引用类型,强引用类型的话只有不再对实例有任何引用才会被垃圾回收,比如str=null释放对“实例”的引用。否则即使是内存溢出也不会被垃圾回收。
2)软引用:相关的类名是softreference,使用方式如下
object o = new object(); --创建强引用
softreference wr = new softreference(o); --创建软引用
o=null --释放强引用
软引用的回收条件是jvm执行垃圾回收且内存不足,可以用来做缓存。
3)弱引用:相关的类名是weakreference,使用方式与软引用类似,不再赘述。
弱引用的的话,每当jvm执行垃圾回收就会被回收,也可以用来做缓存。
4)虚引用:我也不太明白。
三.
除强引用外其他的引用类型都可以配合referencequeue使用。