
课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
引用是Java编程开发程序员都需要熟练掌握和应用的一个编程开发技术,而本文我们就通过案例分析来简单了解一下,Java引用常见类型分析。
强引用
只要引用存在,垃圾回收器永远不会回收
Objectobj=newObject();
这样obj是newObject的一个强引用,只有当obj这个引用被释放之后,Object对象才会被释放掉,这也是我们经常所用到的编码形式。
软引用
非必须引用,内存溢出之前进行回收,可以通过以下代码实现
Objectobj=newObject();
SoftReference sf=newSoftReference(obj);
obj=null;
//有时候会返回null
sf.get();
这时候sf是对obj的一个软引用,通过sf.get()方法可以取到这个对象,当然,当这个对象被标记为需要回收的对象时,则返回null;
软引用主要用户实现类似缓存的功能,在内存足够的情况下直接通过软引用取值,无需从繁忙的真实来源查询数据,提升速度;当内存不足时,自动删除这部分缓存数据,从真正的来源查询这些数据。
弱引用
一个对象只有弱引用指向它的时候,它是可以被回收的
可以通过如下代码实现
Objectobj=newObject();
WeakReferencewf=newWeakReference(obj);
obj=null;
//有时候会返回null
wf.get();
//返回是否被垃圾回收器标记为即将回收的垃圾
wf.isEnQueued();
弱引用是在二次垃圾回收时回收,短时间内通过弱引用取对应的数据,可以取到,当执行过二次垃圾回收时,将返回null
弱引用主要用于监控对象是否已经被垃圾回收器标记为即将回收的垃圾,可以通过弱引用的isEnQueued方法返回对象是否被垃圾回收器标记
虚引用
垃圾回收时回收,无法通过引用取到对象值,可以通过如下代码实现
Objectobj=newObject();
PhantomReferencepf=newPhantomReference(obj);
obj=null;
//永远返回null
pf.get();
//返回是否从内存中已经删除
pf.isEnQueued();
虚引用是每次垃圾回收的时候都会被回收,通过虚引用的get方法永远获取到的数据为null,因此也被成为幽灵引用。
虚引用主要用于检测对象是否已经从内存中删除。
【免责声明】:本内容转载于网络,转载目的在于传递信息。文章内容为作者个人意见,本平台对文中陈述、观点保持中立,不对所包含内容的准确性、可靠性与完整性提供形式地保证。请读者仅作参考。更多内容请加抖音太原达内IT培训学习了解。