Java四种引用类型
强引用
默认的引用,任何对象被赋值即为强引用;
强引用不会被GC回收。
public class StrongReferenceUsage {
@Test
public void stringReference(){
Object obj = new Object();
}
}
软引用
只有在内存不足时,软引用才会被GC回收。
@Test
public void softReference(){
Object obj = new Object();
SoftReference<Object> soft = new SoftReference<>(obj);
obj = null;
log.info("{}",soft.get());
System.gc();
log.info("{}",soft.get());
}
弱引用
只要进行GC,弱引用就会被回收。
@Test
public void weakReference() throws InterruptedException {
Object obj = new Object();
WeakReference<Object> weak = new WeakReference<>(obj);
obj = null;
log.info("{}",weak.get());
System.gc();
log.info("{}",weak.get());
}
虚引用
虚引用对象没有被任何的效果,进行GC即被回收;
作用仅仅是被回收后放入引用队列,标识该对象已被回收。
例如:加载一张大内存图片,确认被回收后才读取下一张,防止OOM。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!