关于java的引用类型的说明

关于java的引用类型的说明:

四种引用类型:

JDK1.2之前,一个对象只有“已被引用”和“未被引用”两种状态。无法描述特殊情况下的对象,比如,当内存充足是需要保留,而内存不足需要抛弃的对象。

所以在JDK1.2之后,将引用分为了:强引用、软引用、弱引用、虚引用。这四个引用强度逐渐减弱。

  1. 强引用:

    new Object = new Object();

    只要强引用存在,垃圾回收机器将不会回收引用的对象,哪怕内存不足,JVM也只会直接抛出OutOfMemoryError异常,断开对象与引用之间的关系,只需要将对象置为null即可,然后垃圾回收器就会在适时的情况下去回收无引用对象。

  2. 软引用:

    软引用是描述一些非必须而仍然有用的对象。在内存足够的时候,软引用对象不会被回收,只有在内存不足时,系统则会回收软引用对象,若果在回收了软引用对象之后仍然内存不足的情况下,才会抛出异常。这种特性常常被用来实现缓存技术,比如网页缓存,图片缓存等等。JDK1.2之后,使用SoftReference类来表示软引用。

  3. 弱引用:

    次引用强度更弱,无论内存是否足够,只要JVM进行垃圾回收,那些被软引用关联的对象都会被回收。在JDK1.2之后,使用WeakReference 类来表示若引用。

  4. 虚引用:

    虚引用是一种最弱的引用关系,如果一个对象持有虚引用,那他就和没有任何引用一样,可能会被随时回收,在 JDK1.2 之后,用 PhantomReference 类来表示,通过查看这个类的源码,发现它只有一个构造函数和一个 get() 方法,而且它的 get() 方法仅仅是返回一个null,也就是说将永远无法通过虚引用来获取对象,虚引用必须要和 ReferenceQueue 引用队列一起使用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值