一、强引用、弱引用、虚引用、软引用

参考的资料:1.《码》P251 2. DIY第11次讨论问题

强引用 - Strong Reference

用于变量的声明和定义。GC Roots可达,Java内存回收时,不会回收该对象(即使濒临内存耗尽)

软引用 - Soft Reference

用在非必需对象的场景。即将OOM之前(内存不足的时候)GC会进行回收,以获得更多的内存空间。用于高速缓存(缓存服务器中间计算结果及不需要实时保存的用户行为等)

弱引用 - Weak Reference

也用在非必需对象的场景。系统启动GC时或下一次YGC时就会被回收,所以回收的时间具有不确定性,应用于WeakHashMap、ThreadLocalMap的Entry适用于缓存比较不敏感信息,与HashMap相比WeakHashMap在保存key后(key值不能有其他引用),GC后WeakHashMap就会自动删除该key相关的key-value对,整个map的大小也会有所变化。使用get方法时要注意空指针。

虚引用 - Phantom Reference

是一种极弱的引用关系,定义完成后,就无法通过该引用获取指向的对象。目的是被回收时会收到一个系统通知。虚引用必须与引用队列联合使用,当垃圾回收时,如果发现存在虚引用,就会在回收对象内存前,把这个虚引用加入到引用队列中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值