一文秒懂强引用,软引用、弱引用、虚引用!
创作时间:
作者:
@小白创作中心
一文秒懂强引用,软引用、弱引用、虚引用!
引用
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
热门推荐
心脏骤停38分钟,多学科团队协作挽救患者生命
PyTorch中的grid_sample函数详解
如何有效清理电脑磁盘,释放存储空间与提升性能
阿德勒和他的50句醍醐灌顶之言
量化基金和一般基金有什么不同?量化基金操作手法全解析
拜占庭帝国的才女:安娜·科穆宁娜的传奇人生
如何向对方表达自己的观点更容易获得认可
《代号鸢》:如何走出一条独特的女性向突围之路?
《崩坏星穹铁道》翁法罗斯全收集视频攻略
工作流调度必看!2025年这四大核心趋势你不能不懂
发酵杂粕在生猪生产中的应用
双子座如何获取正能量
透支卡分期付款方式简介
西安装修价格一览表(费用明细)
阑尾炎疼痛特点及日常注意事项
有力度的降息来了,企业将如何利用贷款成本下降?
我国海上钻井超千口 10余项关键技术获突破
员工考勤制度管理和绩效考核的关系是什么?
国潮出圈!为什么“新中式装修”越来越火?看完这些才知其中原因
多少岁才能买房?年轻购房者的策略指南
我国购房者年龄结构对住宅需求的分析
个人简历表格汇总:打造专属的职业名片
广州和睦家医院开展羊水栓塞多学科救治演练,提升孕产妇急救能力
2140.3万!成都常住人口增加13.5万,增长最多的区是这里→
隋炀帝:为了“天朝上国”的面子,百姓们忍饥受冻算得了什么?
女生家长起诉:维护权益的法律途径与策略
杏仁油手工皂及甜杏仁油的功效
詹姆斯·韦伯太空望远镜:探索宇宙的新利器
怎样在银行办理个人存款证明?
医学奇迹!新型脑机接口让渐冻症患者"思想"成声,准确度达97%!