一文秒懂强引用,软引用、弱引用、虚引用!
创作时间:
作者:
@小白创作中心
一文秒懂强引用,软引用、弱引用、虚引用!
引用
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
热门推荐
春兰与蕙兰:谁才是花中君子?
蝴蝶兰修剪秘籍:让你家兰花美爆棚
黑豆食疗:心脉瘀阻患者的天然良方
《黄帝内经》与现代医学:心脉瘀阻的新认识
夏日养生秘籍:七种食材缓解心血瘀阻
桃仁红花煎:中医治疗心脉瘀阻的秘密武器
荀子教你正确理解“跬”:从半步到千里的智慧
春节旅行必备:流感疫苗接种全攻略
文旅部发布春节出游安全须知:独自旅行者必读的安全指南
公安部发布春节自驾游安全指南:72亿人次出行,这些要点需谨记
兰花:从传统文化到现代情感的桥梁
蝴蝶兰养护秘籍,让你的兰花美翻朋友圈!
兰花养护秘籍:让你的兰花美爆朋友圈
膝盖不太好,戴护膝有用吗?哪种护膝好?听听医生怎么说
广州南沙客运港至香港国际机场航线复航,每日增开至7班次
广西雅长兰科植物保护区:中国唯一的“兰花王国”
吃新鲜蔬果,告别脚出汗烦恼
手足多汗症:压力焦虑下的“脚汗怪”
大城市青年春节留守,搭子文化成新宠?
恐归族:不想回家过年的心理揭秘
职场新人春节回家压力山大?如何应对这些压力
生化幽灵技能加强,键位迎来统一调整
《模拟人生4》幽灵大师技能树终极指南:从威斯普林到超凡幽灵
16人生化平衡性调整,幽灵阵营迎机遇
交通事故赔偿标准按什么地区计算
婆媳大战升级,婚姻还能幸福吗?
婆媳关系中的高效沟通:小芳和小美的秘籍
兰花栽培秘籍:新手也能养出大师级作品
四大美女兰:艺术设计中的独特创新
国家一级保护兰花:生存现状与保护之路