一文秒懂强引用,软引用、弱引用、虚引用!
创作时间:
作者:
@小白创作中心
一文秒懂强引用,软引用、弱引用、虚引用!
引用
CSDN
1.
https://blog.csdn.net/qq_56158663/article/details/146160391
目录
- 一、 强引用 💪
- 二、 软引用 ☁️
- 三、 弱引用 🍃
- 四、 虚引用 👻
- 五、总结:
🌟本文将为您详细讲解Java中的四种引用类型:强引用、软引用、弱引用和虚引用。这些引用类型在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
热门推荐
“手”护健康,从正确洗手开始!
设计,让体育馆不成“体”统
计算CPK的数据取样原则探讨
中国正省级和副省级城市有哪些
翡翠冰裂纹:含义、影响与保养指南
姜文新片《英雄出少年》官宣2025上映,赵本山葛优助阵演员阵容豪华
打嗝按摩部位图解
图森更名,把未来交给AIGC
2024年9月英语教材全面改版!5大方向,提前准备!
“唤起胶东记忆”——西工大学子走进烟台深入探寻胶东文化
历史上赵匡胤和赵光义二人谁的治国才能更胜一筹?
在充满不确定的世界,如何让概率成为利器?
探索多彩民族风情与自然奇观-云南旅游攻略全在这儿
云南露营地点推荐及排名
自身免疫病的发生机制是什么
如何挑选优质小米
厨房新手指南:五谷杂粮的基础烹调方法
甜茶的种类、制作方法和功效:一篇全面解答
艾灸能治痛风吗
种地撒点“生石灰”用处大,农户经常错误使用,帮倒忙,太可惜!
违规停车遭罚单?别慌!手把手教你正确处理流程
雨水节气话养生:四款花茶助你焕发春日新活力
老是尿多是什么原因导致的
重庆溪特色正宗老鹰茶:品味传统与创新的完美融合
胳膊皮肤出现异常怎么办?可能的原因及应对方法
全球多地标志性建筑熄灯 参与“地球一小时”活动
2024“地球一小时”活动:呼吁更多人“献出一小时”
厦门同安吕厝送王船习俗:从历史渊源到仪式细节
户口所在地所属行政区怎么填
户口性质填什么?户籍制度改革最新进展