一文秒懂强引用,软引用、弱引用、虚引用!
创作时间:
作者:
@小白创作中心
一文秒懂强引用,软引用、弱引用、虚引用!
引用
CSDN
1.
https://blog.csdn.net/qq_56158663/article/details/146160391
在Java中,对象的引用类型不仅仅是简单的指针,它们还决定了对象的生命周期和垃圾回收的时机。本文将深入讲解四种引用类型:强引用、软引用、弱引用和虚引用,帮助你更好地理解Java的内存管理和垃圾回收机制。
一、 强引用 💪
意义:你
new
出来的对象,只要有变量指向它,它就死不了。 💀 GC 绝对不会回收它。
特点:
- 最常见的引用类型。
- 只要有强引用指向一个对象,该对象就不会被垃圾回收器回收。
- 即使内存不足,JVM 宁愿抛出
OutOfMemoryError
(OOM) 💥 异常,也不会回收强引用指向的对象。
代码示例:
public class StrongReferenceExample {
public static void main(String[] args) {
// 创建一个对象,并用强引用指向它
Object obj = new Object();
Object strongRef = obj;
// 此时,obj和strongRef都指向同一个对象
System.out.println(obj);
System.out.println(strongRef);
// 将obj置为null,但strongRef仍然指向该对象
obj = null;
System.gc(); // 建议JVM进行垃圾回收,但不保证立即执行
// 即使obj为null,strongRef指向的对象仍然存在,不会被回收
System.out.println(strongRef); // 仍然能打印出对象
// 只有当strongRef也置为null时,该对象才有可能被回收
strongRef = null;
System.gc();
}
}
解释:
Object obj = new Object();
创建了一个新的
Object
对象,并用强引用
obj
指向它。
Object strongRef = obj;
又创建了一个强引用
strongRef
,也指向同一个对象。
- 即使
obj = null;
,
strongRef
仍然指向该对象,所以该对象不会被回收。 - 只有当
strongRef = null;
,并且 GC 执行时,该对象才有可能被回收。
二、 软引用 ☁️
意义:对象还有用,但也不是非要不可。 🤷 内存够用的时候,留着它;内存不够用的时候,就回收它。
特点:
- 比强引用弱一些的引用类型。
- 只有当 JVM 认为内存不足时,才会回收软引用指向的对象。
- 通常用于实现缓存。 📦
代码示例:
import java.lang.ref.SoftReference;
public class SoftReferenceExample {
public static void main(String[] args) {
// 创建一个对象
Object obj = new Object();
// 创建一个软引用指向该对象
SoftReference<Object> softRef = new SoftReference<>(obj);
// 将obj置为null,断开强引用
obj = null;
// 从软引用中获取对象
Object retrievedObj = softRef.get();
System.out.println("Before GC: " + retrievedObj);
// 尝试进行垃圾回收
System.gc();
// 再次从软引用中获取对象
retrievedObj = softRef.get();
System.out.println("After GC: " + retrievedObj);
// 模拟内存不足的情况
try {
byte[] b = new byte[1024 * 1024 * 700]; // 700MB
} catch (OutOfMemoryError e) {
System.out.println("OOM occurred");
}
// 再次尝试获取对象
retrievedObj = softRef.get();
System.out.println("After OOM: " + retrievedObj);
}
}
解释:
SoftReference
热门推荐
什么是生物催化剂?生物催化剂在生物反应过程中的重要作用
失业后五险一金该如何缴纳?失业后缴纳五险一金有哪些方式?
AI大模型应用万能且好用的10个技巧, 帮你大幅提升AI生成质量
退租提前一个月告知房东,注意事项与流程详解
租房退房的流程及注意事项有哪些?
碰撞融合,东北人这样横空出世!
饮食指南:茄科蔬菜对您有害吗?
银行理财产品投资收益与投资者风险偏好的匹配模型构建
潘宏“虐狗”事件:训狗还是虐待?网红训狗师陷入争议漩涡
交工验收和竣工验收的区别是什么
直播助力古田银耳香飘远 大食物观引领菌菇产业铸辉煌
律师代办个人债务处理真的能解决债务危机吗?
活性炭吸附工艺的规范化建设及运行管理参考
日照温泉全解析:特色、玩法与旅游指南
合同解除条款怎么写
合同解除的法律后果怎么规定的,合同解除后是否都承担损害赔偿责任
课题推荐——基于自适应滤波技术的多传感器融合在无人机组合导航中的应用研究
锂电池充电为什么先恒流后恒压充电
锂电池充电为什么先恒流后恒压充电
周华健创作的《难念的经》为何能成为《天龙八部》主题曲流传至今
周华健的《朋友》歌词,分析这首经典歌曲的情感内涵
五种不同用途的电脑配置推荐
中小微企业查询官网:法律视角下的信息检索与合规保障
法务顾问需要具备哪些法律资质
三国时期的西凉:现今的甘肃西部地区
仅存续22年的神秘西凉国究竟在哪?创始人为李广后代
碳酸钙高温分解的化学方程式是什么
网络主播劳动仲裁案例解析与法律分析
股东关系管理是什么?如何做好股东关系管理?
《甄嬛传》心理解读:五位角色的生存智慧