java中引用类型

java中引用类型分为4种,分别为强引用软引用弱引用虚引用

  1. 强引用
    具有强引用的对象类似于“必不可少的生活用品”,当一个对象具有强引用时,垃圾回收器绝对不会回收它,即使内存空间不足,也宁愿抛出内存溢出的异常来终止程序,而不会通过回收强引用对象解决内存不足问题。我们使用的大部分引用是强引用。

  2. 软引用
    只具有强引用的对象类似于“可有可无的生活用品”。如果内存空间足够,垃圾回收器就不会回收它。内存不足时,就会进行回收。没有被回收的弱引用对象可以被程序使用。软引用可以用来实现内存敏感的高速缓存。软引用可以和一个引用队列结合使用,在软引用对象被回收之前,会将指向此对象的软引用加入到引用队列当中。

  3. 弱引用
    只具有强引用的对象类似于“可有可无的生活用品”。但是与软引用的区别是:只有弱引用的对象比软引用对象具有更短暂的生命。当垃圾收集器线程扫描它所管理的内存区域,发现只有弱引用的对象,不管此事内存空间是否不足,都会回收该对象。但是垃圾回收线程的优先级是很低的,因此不一定很快发现只具有弱引用的对象。弱引用可以和一个引用队列结合使用,在软引用对象被回收之前,会将指向此对象的弱引用加入到引用队列当中。

  4. 虚引用
    如果一个对象仅具有虚引用,则就像是没有引用一样,随时会被垃圾回收器回收。虚引用和弱引用的区别是。虚引用必须要和引用队列结合使用。在弱引用对象被收回之前弱引用就会被加入到队列中,程序可以根据引用队列中是否加入了虚引用,来判断引用指向的对象是否将会被回收。这样可以在对象回收之前做一些必要的操作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值