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。

posted @   ubyte  阅读(34)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
点击右上角即可分享
微信分享提示