Java的StrongReference, SoftReference, WeakReference, PhantomReference的区别

本文详细介绍了Java中四种引用类型:强引用、软引用、弱引用和虚引用,及其与垃圾回收(GC)的关系。强引用是最常见的引用类型,而软引用、弱引用和虚引用则分别在不同条件下被垃圾回收器处理,用于缓存管理、内存优化和避免对象过早被回收。了解这些引用类型有助于更高效地管理内存资源。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Java一共有四种类型的饮用,StrongReference, SoftReference, WeakReference, PhantomReference。这四种类型的引用与GC有着密切的联系。


1 StrongReference, 强引用,最常见,就是我们平常写的引用类型。

Object o = new Object();

Object o2 = o;

o和o2都是强引用。只要存在强引用,GC是不会进行回收的。


2 SoftReference, 软引用,这种类型的引用只会在JVM将要OutOfMemory时才会被回收。主要用于缓存,当内存不够时,才去收集这些缓存的内存,从而使缓存不影响应用的内存使用量。

Object o = new Object();

SoftReference<Object> softReferenceObj = new SoftReference<Object>(o);

o = null;

assertNotNull(softReferenceObj.get());


3 WeakReference, 弱引用,这种类型的引用会在GC时被回收。一般用weak reference引用的对象是有价值被cache, 而且很容易被重新被构建, 且很消耗内存的对象。

Object o = new Object();

WeakReference<Object> weakReferenceObj = new WeakReference<Object>(o);

o = null;

System.gc();

assertNull(weakReferenceObj.get());


4 PhantomReference, 虚引用,虚引用既不会影响对象的生命周期,也无法通过虚引用来获取对象实例,只用于在发生GC时接收一个系统通知。

原文:http://blog.youkuaiyun.com/hongchangfirst/article/details/50735576

作者:hongchangfirst

hongchangfirst的主页:http://blog.youkuaiyun.com/hongchangfirst





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值