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使用。

猜你喜欢

转载自www.cnblogs.com/chenshiheng/p/9314805.html