问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

分析java对象的几种引用(reference)

发布网友 发布时间:2022-04-27 13:18

我来回答

1个回答

热心网友 时间:2023-10-15 02:22

  java对象的引用reference分为有强引用,软引用,弱引用,虚引用这几种形式。  1、Soft Reference(软引用)  指到的对象,即使没有任何Direct Reference,也不会清除,一直到jvm内存不足且没有Direct Reference时候才会清除。  应用场景:常用来设计缓存,不但可以将对象缓存起来,也不会容易造成内存不足。  2、Weak Reference(弱引用)  GC一旦发现了弱引用关系进行就开始收集对象。  应用场景:想查看某些对象信息,又不想影响GC对其的收集工作。  与GC的交互:  1.将referent置为null引用;  2.将堆中的目标对象设置为finalizable(可结束的);  3.先执行finalize(),释放内存,软引用添加到RefernceQueue中。  ReferenceQueue在 soft renference和 weak reference中可以为null,但虚应用中必须有!  3、PhantomReference(虚引用)  与GC的交互:  1.不将referent置为null引用;而是将堆中的目标对象设置为finalizable(可结束的);  2.先软引用添加到RefernceQueue中。然后收集对象,释放内存  附注:ReferenceQueue在 soft renference和 weak reference中可以为null,但虚引用中必须有!  4、抽象类Reference分析  java.lang.ref包中有四个类,他们的关系是PhantomReference,WeakReference,SoftReference继承了抽象类Reference。Reference类中,有thread子类(ReferenceHandler),并在静态区域中开启,对pending字段进行实时的监控。  pending是由jvm来赋值的,当Reference内部的referent对象的可达状态改变时,jvm会将Reference对象放入pending链表。  一旦relevent= null,垃圾收集时会标记WeakReference的referent为不可达get()返回null,并且通过赋值给pending ,触发ReferenceHandler线程处理pending。  ReferenceHandler线程要做的是将pending对象enqueue,但默认我们所提供的queue,也就是从构造函数传入的是null,实际是使用了ReferenceQueue.NULL,Handler线程判断queue为ReferenceQueue.NULL则不进行操作,只有非ReferenceQueue.NULL 的queue才会将Reference进行enqueue。  希望通过以上内容的介绍,能够给你带来帮助。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
柏林地铁路线 高三敬业话题作文800字 怀孕可以吃羊肉米粉吗 坐月子能不能吃羊肉粉 坐月子吃羊肉的好处 卜蜂蛋鸡预混料配方 怀孕多久后才能吃羊肉粉 一个人不花钱完美世界国际版玩什么职业最好?多谢了 女孩也会花心吗? 女生也会花心么? 三孔附近有什么好玩的地方 2019年乐山市城镇职工医疗保险和城镇居民医疗保险的区别 JAVA中,”对象的引用“是指什么? 2021年乐山社保缴费档次表 java 中 什么是引用对象 乐山职工医保缴多少年 在Java中要引用对象的属性和方法,需要怎么实现? 乐山医保怎么网上缴费 乐山地区城镇职工医保至少要交多少年 什么是对象引用?JAVA 乐山市社保医疗是怎样报销的 土豆焖烧五花肉怎么做 五花肉土豆焖饭的做法步骤图,怎么做好吃 怎样洗车才能洗好车 excel 从各种分类中统计出相同项的总量 国内品牌钻戒好的有哪些? excel怎么统计同类型数据数量 十大高端戒指品牌排行榜 戒指什么牌子好 如何获取各类统计数据 如何用excel统计分类数据 心理统计各种数据类型之间的区别和联系 乐山社保分几档 乐山社保交费标准是多少 在JAVA中,什么是对象?什么是引用? java中的当前对象的引用是指什么呢? 乐山市城镇职工医疗保险女的最低年限要交满多少年(年限是连续还是可累积的) java 中怎么获得对象引用的名称? 乐山最低社保缴费标准是多少 java中对象实体与对象的引用有何不同? 2021乐山社保8个档次 在JAVA中:对象、实例、引用,分别是什么意思? 乐山医保办公布部分一次性使用及植入性材料医保支付标准通知 Java对象怎么调用 乐山职工社保查询系统 电脑本地连接显示我以前无线路由器的名称,怎么改 java中,类的对象,对象的实例,对象的引用,三者如何进行区分,有何区别... 乐山城镇医疗保险查询系统 无线网可以用电脑更改信息吗 java中对象的引用和实例求解释 乐山市医疗保险查询 电脑上怎么修改wifi