本文主要讲解“引用Java的四种方式是什么”。感兴趣的朋友不妨看看。本文介绍的方法简单、快速、实用。让边肖带你学习“引用Java的四种方法是什么?”!
1.强引用(StrongReference)
使用最常见的参考。
只要参考链不断裂,强参考就不会断裂。-当内存空间不足时,抛出OutOfMemoryError将不会回收具有强引用的对象。
通过将对象设置为null来弱化引用会使其被回收。
object object=NewObject();
Stringstr=' scc
//两者都是强引用。
2.软引用(SoftReference)
对象处于有用但不必要的状态。
只有当内存空间不足时,GC才会回收被引用对象的内存。
它可以用来实现缓存——比如网页缓存和图片缓存。
//注意:wrf也是一个强引用,指向对象SoftReference。
//这里的SoftReference指的是对newString('str ')的引用,它在softreference类中是t。
SoftReferenceStringwrf=newSoftReferenceString(newString(' str '));
3.弱引用(WeakReference)
弱引用就是只要JVM垃圾回收器发现了它,就会将之回收。
不必要的对象比软引用弱。
将返回GC。
被回收的概率不大,因为GC线程优先级比较低。
适用于偶尔使用引用且不影响垃圾收集的对象的使用:
MapKey,ResourceWeakReferenceactiveEngineResources=new hashmap();
///resourcewaekrreference弱引用
4.虚引用(PhantomReference)
不会决定对象的生命周期。
垃圾收集器可以随时回收。
跟踪垃圾收集器正在收集的对象的活动,并充当哨兵。
必须与ReferenceQueue referencequeue结合使用。
当垃圾收集器准备回收一个对象时,如果它发现它仍然有一个虚拟引用,它会将该虚拟引用添加到其关联的引用队列中。
程序可以通过判断虚拟引用是否已经添加到引用队列中来知道被引用对象是否会被垃圾收集。如果程序发现虚拟引用已经被添加到引用队列中,它可以在被引用对象的内存被回收之前采取必要的操作。
object obj=NewObject();
ReferenceQueuequeue=new referencequeue();
PhantomReferenceReference=NewPhantomReference(obj,queue);
//strong引用对象为空,保留软引用。
obj=null
5.引用队列(ReferenceQueue)
没有实际的存储结构,存储逻辑依赖于内部节点之间的关系。
通过GC存储关联的软引用、弱引用和虚拟引用。
至此,相信大家对“引用Java的四种方式是什么”有了更深的理解,所以让我们在实践中去做。这是网站。更多相关内容,可以进入相关渠道查询,关注我们,继续学习!
内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/56684.html