临汾山东漯河饰品美体美文
投稿投诉
美文创意
爱情通信
用品婚姻
爱好看病
美体软件
影音星座
瑜伽周边
星座办公
饰品塑形
搞笑减肥
幼儿两性
智家潮品
漯河衢州
兴义眉山
桂林阳泉
玉溪简阳
山东遂宁
永城新余
梧州洛阳
泸州温州
临汾清远
营口常熟
浙江大连
桐乡宜昌

Java四大引用详解强引用软引用弱引用虚引用

9月25日 相思宫投稿
  面试官考察Java引用会问到强引用、弱引用、软引用、虚引用,具体有什么区别?本篇单独来详解mikechenJava引用
  从JDK1。2版本开始,对象的引用被划分为4种级别,从而使程序能更加灵活地控制对象的生命周期,这4种级别由高到低依次为:强引用、软引用、弱引用和虚引用。
  强引用
  强引用是最普遍的引用,一般把一个对象赋给一个引用变量,这个引用变量就是强引用。
  比如:preclassprettyprinthljsfsharpstylepadding:0。5fontfamily:Menlo,Monaco,Consolas,CourierNew,color:rgb(68,68,68);borderradius:4display:margin:0px0px1。5fontsize:14lineheight:1。5wordbreak:overflowwrap:whitespace:backgroundcolor:rgb(246,246,246);border:overflowx:fontstyle:fontvariantligatures:fontvariantcaps:fontweight:400;letterspacing:orphans:2;textalign:textindent:0texttransform:widows:2;wordspacing:0webkittextstrokewidth:0textdecorationthickness:textdecorationstyle:textdecorationcolor:强引用MikeChenmikechennewMikeChen();复制代码pre
  在一个方法的内部有一个强引用,这个引用保存在Java栈中,而真正的引用内容(MikeChen)保存在Java堆中。
  如果一个对象具有强引用,垃圾回收器不会回收该对象,当内存空间不足时,JVM宁愿抛出OutOfMemoryError异常。
  如果强引用对象不使用时,需要弱化从而使GC能够回收,如下:preclassprettyprinthljsfsharpstylepadding:0。5fontfamily:Menlo,Monaco,Consolas,CourierNew,color:rgb(68,68,68);borderradius:4display:margin:0px0px1。5fontsize:14lineheight:1。5wordbreak:overflowwrap:whitespace:backgroundcolor:rgb(246,246,246);border:overflowx:fontstyle:fontvariantligatures:fontvariantcaps:fontweight:400;letterspacing:orphans:2;textalign:textindent:0texttransform:widows:2;wordspacing:0webkittextstrokewidth:0textdecorationthickness:textdecorationstyle:textdecorationcolor:帮助垃圾收集器回收此对象复制代码pre
  显式地设置mikechen对象为null,或让其超出对象的生命周期范围,则GC认为该对象不存在引用,这时就可以回收这个对象,具体什么时候收集这要取决于GC算法。
  举例:preclassprettyprinthljsdartstylepadding:0。5fontfamily:Menlo,Monaco,Consolas,CourierNew,color:rgb(68,68,68);borderradius:4display:margin:0px0px1。5fontsize:14lineheight:1。5wordbreak:overflowwrap:whitespace:backgroundcolor:rgb(246,246,246);border:overflowx:fontstyle:fontvariantligatures:fontvariantcaps:fontweight:400;letterspacing:orphans:2;textalign:textindent:0texttransform:widows:2;wordspacing:0webkittextstrokewidth:0textdecorationthickness:textdecorationstyle:textdecorationcolor:packagecom。mikechen。java。强引用举例authormikechenpublicclassStrongRefenenceDemo{publicstaticvoidmain(String〔〕args){Objecto1newObject();Objecto2o1;o1System。gc();System。out。println(o1);nullSystem。out。println(o2);java。lang。Object2503dbd3}}复制代码pre
  StrongRefenenceDemo中尽管o1已经被回收,但是o2强引用o1,一直存在,所以不会被GC回收。软引用
  软引用是一种相对强引用弱化了一些的引用,需要用java。lang。ref。SoftReference类来实现。
  比如:preclassprettyprinthljsruststylepadding:0。5fontfamily:Menlo,Monaco,Consolas,CourierNew,color:rgb(68,68,68);borderradius:4display:margin:0px0px1。5fontsize:14lineheight:1。5wordbreak:overflowwrap:whitespace:backgroundcolor:rgb(246,246,246);border:overflowx:fontstyle:fontvariantligatures:fontvariantcaps:fontweight:400;letterspacing:orphans:2;textalign:textindent:0texttransform:widows:2;wordspacing:0webkittextstrokewidth:0textdecorationthickness:textdecorationstyle:textdecorationcolor:StringstrnewString(abc);强引用SoftReferenceStringsoftRefnewSoftReferenceString(str);软引用复制代码pre
  如果一个对象只具有软引用,则内存空间足够,垃圾回收器就不会回收它,如果内存空间不足了,就会回收这些对象的内存。
  先通过一个例子来了解一下软引用:preclassprettyprinthljsdartstylepadding:0。5fontfamily:Menlo,Monaco,Consolas,CourierNew,color:rgb(68,68,68);borderradius:4display:margin:0px0px1。5fontsize:14lineheight:1。5wordbreak:overflowwrap:whitespace:backgroundcolor:rgb(246,246,246);border:overflowx:fontstyle:fontvariantligatures:fontvariantcaps:fontweight:400;letterspacing:orphans:2;textalign:textindent:0texttransform:widows:2;wordspacing:0webkittextstrokewidth:0textdecorationthickness:textdecorationstyle:textdecorationcolor:弱引用举例authormikechenObjectobjnewObject();SoftReferencesoftRefnewSoftReferenceObject(obj);删除强引用调用gc对象依然存在System。gc();System。out。println(gc之后的值:softRef。get());复制代码pre
  软引用可以和一个引用队列(ReferenceQueue)联合使用,如果软引用所引用对象被垃圾回收,Java虚拟机就会把这个软引用加入到与之关联的引用队列中。preclassprettyprinthljscsstylepadding:0。5fontfamily:Menlo,Monaco,Consolas,CourierNew,color:rgb(68,68,68);borderradius:4display:margin:0px0px1。5fontsize:14lineheight:1。5wordbreak:overflowwrap:whitespace:backgroundcolor:rgb(246,246,246);border:overflowx:fontstyle:fontvariantligatures:fontvariantcaps:fontweight:400;letterspacing:orphans:2;textalign:textindent:0texttransform:widows:2;wordspacing:0webkittextstrokewidth:0textdecorationthickness:textdecorationstyle:textdecorationcolor:ReferenceQueueObjectqueuenewReferenceQueue();ObjectobjnewObject();SoftReferencesoftRefnewSoftReferenceObject(obj,queue);删除强引用调用gcSystem。gc();System。out。println(gc之后的值:softRef。get());对象依然存在申请较大内存使内存空间使用率达到阈值,强迫gcbyte〔〕bytesnewbyte〔10010241024〕;如果obj被回收,则软引用会进入引用队列R?referencequeue。remove();if(reference!null){System。out。println(对象已被回收:reference。get());对象为null}复制代码pre
  软引用通常用在对内存敏感的程序中,比如高速缓存就有用到软引用,内存够用的时候就保留,不够用就回收。
  我们看下Mybatis缓存类SoftCache用到的软引用:preclassprettyprinthljskotlinstylepadding:0。5fontfamily:Menlo,Monaco,Consolas,CourierNew,color:rgb(68,68,68);borderradius:4display:margin:0px0px1。5fontsize:14lineheight:1。5wordbreak:overflowwrap:whitespace:backgroundcolor:rgb(246,246,246);border:overflowx:fontstyle:fontvariantligatures:fontvariantcaps:fontweight:400;letterspacing:orphans:2;textalign:textindent:0texttransform:widows:2;wordspacing:0webkittextstrokewidth:0textdecorationthickness:textdecorationstyle:textdecorationcolor:publicObjectgetObject(Objectkey){OSoftReferenceObjectsoftReference(SoftReference)this。delegate。getObject(key);if(softReference!null){resultsoftReference。get();if(resultnull){this。delegate。removeObject(key);}else{synchronized(this。hardLinksToAvoidGarbageCollection){this。hardLinksToAvoidGarbageCollection。addFirst(result);if(this。hardLinksToAvoidGarbageCollection。size()this。numberOfHardLinks){this。hardLinksToAvoidGarbageCollection。removeLast();}}}}}复制代码pre
  注意:软引用对象是在jvm内存不够的时候才会被回收,我们调用System。gc()方法只是起通知作用,JVM什么时候扫描回收对象是JVM自己的状态决定的,就算扫描到软引用对象也不一定会回收它,只有内存不够的时候才会回收。弱引用
  弱引用的使用和软引用类似,只是关键字变成了WeakReference:preclassprettyprinthljsfsharpstylepadding:0。5fontfamily:Menlo,Monaco,Consolas,CourierNew,color:rgb(68,68,68);borderradius:4display:margin:0px0px1。5fontsize:14lineheight:1。5wordbreak:overflowwrap:whitespace:backgroundcolor:rgb(246,246,246);border:overflowx:fontstyle:fontvariantligatures:fontvariantcaps:fontweight:400;letterspacing:orphans:2;textalign:textindent:0texttransform:widows:2;wordspacing:0webkittextstrokewidth:0textdecorationthickness:textdecorationstyle:textdecorationcolor:MikeChenmikechennewMikeChen();WeakReferenceMikeChenwrnewWeakReferenceMikeChen(mikechen);复制代码pre
  弱引用的特点是不管内存是否足够,只要发生GC,都会被回收。
  举例说明:preclassprettyprinthljsdartstylepadding:0。5fontfamily:Menlo,Monaco,Consolas,CourierNew,color:rgb(68,68,68);borderradius:4display:margin:0px0px1。5fontsize:14lineheight:1。5wordbreak:overflowwrap:whitespace:backgroundcolor:rgb(246,246,246);border:overflowx:fontstyle:fontvariantligatures:fontvariantcaps:fontweight:400;letterspacing:orphans:2;textalign:textindent:0texttransform:widows:2;wordspacing:0webkittextstrokewidth:0textdecorationthickness:textdecorationstyle:textdecorationcolor:packagecom。mikechen。java。importjava。lang。ref。WeakR弱引用authormikechenpublicclassWeakReferenceDemo{publicstaticvoidmain(String〔〕args){Objecto1newObject();WeakReferenceObjectw1newWeakReferenceObject(o1);System。out。println(o1);System。out。println(w1。get());o1System。gc();System。out。println(o1);System。out。println(w1。get());}}复制代码pre弱引用的应用WeakHashMappreclassprettyprinthljstypescriptstylepadding:0。5fontfamily:Menlo,Monaco,Consolas,CourierNew,color:rgb(68,68,68);borderradius:4display:margin:0px0px1。5fontsize:14lineheight:1。5wordbreak:overflowwrap:whitespace:backgroundcolor:rgb(246,246,246);border:overflowx:fontstyle:fontvariantligatures:fontvariantcaps:fontweight:400;letterspacing:orphans:2;textalign:textindent:0texttransform:widows:2;wordspacing:0webkittextstrokewidth:0textdecorationthickness:textdecorationstyle:textdecorationcolor:publicclassWeakHashMapDemo{publicstaticvoidmain(String〔〕args)throwsInterruptedException{myHashMap();myWeakHashMap();}publicstaticvoidmyHashMap(){HashMapString,StringmapnewHashMapString,String();StringkeynewString(k1);Stringvaluev1;map。put(key,value);System。out。println(map);System。gc();System。out。println(map);}publicstaticvoidmyWeakHashMap()throwsInterruptedException{WeakHashMapString,StringmapnewWeakHashMapString,String();S刚开始写成了上边的代码思考一下,写成上边那样会怎么样?那可不是引用了StringkeynewString(weak);Smap。put(key,value);System。out。println(map);去掉强引用System。gc();Thread。sleep(1000);System。out。println(map);}}复制代码pre
  当key只有弱引用时,GC发现后会自动清理键和值,作为简单的缓存表解决方案。ThreadLocalpreclassprettyprinthljsscalastylepadding:0。5fontfamily:Menlo,Monaco,Consolas,CourierNew,color:rgb(68,68,68);borderradius:4display:margin:0px0px1。5fontsize:14lineheight:1。5wordbreak:overflowwrap:whitespace:backgroundcolor:rgb(246,246,246);border:overflowx:fontstyle:fontvariantligatures:fontvariantcaps:fontweight:400;letterspacing:orphans:2;textalign:textindent:0texttransform:widows:2;wordspacing:0webkittextstrokewidth:0textdecorationthickness:textdecorationstyle:textdecorationcolor:staticclassThreadLocalMap{staticclassEntryextendsWeakReferenceThreadL?{OEntry(ThreadL?k,Objectv){super(k);}}。。。。。。}复制代码pre
  ThreadLocal。ThreadLocalMap。Entry继承了弱引用,key为当前线程实例,和WeakHashMap基本相同。虚引用
  虚引用顾名思义,就是形同虚设,与其他几种引用都不同,虚引用并不会决定对象的生命周期。如果一个对象仅持有虚引用,那么它就和没有任何引用一样,在任何时候都可能被垃圾回收器回收。
  虚引用也称为幽灵引用或者幻影引用,它是最弱的一种引用关系。
  虚引用需要java。lang。ref。PhantomReference来实现:preclassprettyprinthljsxmlstylepadding:0。5fontfamily:Menlo,Monaco,Consolas,CourierNew,color:rgb(68,68,68);borderradius:4display:margin:0px0px1。5fontsize:14lineheight:1。5wordbreak:overflowwrap:whitespace:backgroundcolor:rgb(246,246,246);border:overflowx:fontstyle:fontvariantligatures:fontvariantcaps:fontweight:400;letterspacing:orphans:2;textalign:textindent:0texttransform:widows:2;wordspacing:0webkittextstrokewidth:0textdecorationthickness:textdecorationstyle:textdecorationcolor:AanewA();ReferenceQueuerqnewReferenceQueue();PhantomReferenceprAnewPhantomReference(a,rq);复制代码pre
  虚引用主要用来跟踪对象被垃圾回收器回收的活动。
  虚引用与软引用和弱引用的一个区别在于:虚引用必须和引用队列(ReferenceQueue)联合使用,当垃圾回收器准备回收一个对象时,如果发现它还有虚引用,就会在回收对象的内存之前,把这个虚引用加入到与之关联的引用队列中。Java引用总结
  java4种引用的级别由高到低依次为:强引用软引用弱引用虚引用。
  来源:https:juejin。cnpost7131175540874018830

每日早安暖心话撩人早安情话最暖心短句下面这些是小编给大家整理的每日早安暖心话,撩人早安情话最暖心短句,把埋怨的话放一放,把负能量收一收太阳喜欢向日葵,人们也会喜欢上爱笑的你习惯好的自己,一切都会好的早安!,喜欢就……一则假消息令腾讯2362亿市值蒸发,再令中信传媒首席躺枪,是财联社(深圳记者,成孟琦)讯,谣言没事溜一圈,锻炼下股民的心理承受力。2月21日盘中又上演,雪球一用户高喊腾讯将被重锤,遭广泛转发讨论,市场情绪波动随之而来,腾讯股价应声……彻底理解volatilevolatile原理在Java并发编程中synchronized和volatile扮演者重要的角色,volatile是轻量级的synchronized,它在多处理器开发中……为何勇士将重返总决?美媒列5大理由!3大奇兵获认可,普尔排第尽管季后赛处于初期阶段,但时隔3年重返季后赛的勇士却让人印象深刻,他们场均轰下124。5分,领跑所有季后赛球队,并且场均送出30次助攻。更为恐怖的是,这支进攻如水银泻地般……Java四大引用详解强引用软引用弱引用虚引用面试官考察Java引用会问到强引用、弱引用、软引用、虚引用,具体有什么区别?本篇单独来详解mikechenJava引用从JDK1。2版本开始,对象的引用被划分为4种级别,……月升沧海同是才貌俱佳,文帝为何对越妃疼爱有加,却对宣后无感《月升沧海》凌不疑出征寿春的时候,在众多将士面前送给了程少商自己的私印。文帝与越妃、宣皇后三人在高台上注视着这一幕。文帝称大庭广众之下成何体统,怎么就那么的难舍难分……郑恺一家首次公开亮相!郑恺单手抱娃太霸气,苗苗穿卫衣变潮人郑恺自从结婚生子后,就备受大家的关注,不久前,一家三口在新年后首次公开亮相走机场,郑恺抱着女儿身穿潮味造型,整个人看上去多了不少的时尚帅气感,而妻子苗苗身穿运动装,整个人的纤细……CBA最新消息!翼龙官宣刘传兴加盟,新疆续约大外,郑准正式退CBA目前正处在休赛期当中,不过休赛期也有许多转会和续约的传闻,那么今天我们一同来关注一下CBA方面传来的最新的三条消息。首先第1条消息就是关于刘传兴的。在今天香港湾区翼……糖醋汁怎样调?牢记黄金比例54321,按照这个配方,一次成功临近年底,是时候准备一桌丰盛的年夜饭了,不少人已经开始行动,计划起了年夜饭菜单,鸡鸭鱼肉,红烧、糖醋、黄焖、油炸、凉拌,多种烹饪手法,搭配了不同口味的菜肴,在众多的菜系中,孩子……广东宏远下狠心!决定放弃马尚第三外援人选浮出水面广东宏远好不容易在第二阶段尾声阶段找到了状态,结果却惨败给了上海男篮,更糟糕的是两名外援威姆斯和莱多关键时刻都不是非常给力。当然,很多球迷都期待马尚可以在第三阶段或者季后赛回归……反物质是往上还是往下坠落?CERN实验对此展开研究来自欧洲核子研究中心(CERN)的物理学家发现,反物质会坠落。这听起来是一件显而易见的事情,但科学家们尚未能够确认它对重力的反应是否跟普通物质完全相同。现在,一个新的实验提供了……郭艾伦赵继伟高诗岩到底能不能在杨鸣的团队篮球理念下共融大概率是郭艾伦的转会会无疾而终还会回到辽宁打球,高诗岩已经拒绝了山东队,重返母队征战下赛季,赵继伟妥妥的不会走,拉练受伤牵挂着辽宁球迷的心!拥有全联盟最出色的后卫群,是幸……
十堰10月物业公司投诉榜单出炉!50个小区上榜,看看有你家吗物业究竟有多重要?对于新房来说,评估一套房产的价值,除了品牌、价格、地段、配套等硬件外,物业作为服务延续的软件也日渐受大家关注。而对于二手房来说,好的物业,不仅能让……金卡戴珊停车场拍照,穿镜面裙秀蚂蚁腰,1米55拍出超模身高当地时间11月11日,刚刚过完42岁生日的真人秀女星金卡戴珊分享自己在停车场拍摄的美照。在金的照片中,比弗利山庄的地下停车场成了金的T台。她穿着一条长到脚面的银色镜面长裙……第二批国家级夜间文旅消费集聚区公布陕西4地入选近日,文化和旅游部发布《关于公布第二批国家级夜间文化和旅游消费集聚区名单的通知》,全文如下。各省、自治区、直辖市文化和旅游厅(局)、新疆生产建设兵团文化体育广电和旅游局:……恭喜!谢震业求婚成功,跳远冠军女友逆天长腿,发誓相爱一辈子又一对冠军夫妻!北京时间9月9日,中国短跑名将谢震业向女友陆敏佳求婚成功,两人甜蜜相拥相吻,谢震业拿着戒指单膝下跪求婚,陆敏佳一脸开心大笑,恭喜两位!其实在前段时间,谢震业就宣……连续买入特斯拉,木头姐惨遭对冲大佬嘲讽!今年迄今,标普500指数累计下跌19。66,录得金融危机以来最大年度跌幅。科技股特斯拉一夜之间暴跌11。41,今年累计跌幅69。03。1木头姐12月连续买入特斯拉特……到哪儿都离不开钱,穿越古代就能无忧无虑了?在工作压力大的时候我们常常都会衍生出一个想法,那就是能穿越到古代就好了,不用这么辛苦的上班,自给自足就可以,还可以尽全力的去享受大自然的魅力,现实是你在想屁吃,根本不切实际。……今日WTT乒乓两看点谁能挡住59岁老将脚步?中国女乒谁能打进8月27日,捷克奥洛穆茨站WTT支线赛正赛进入第3天的争夺,8强全部产生、进入14决赛阶段。打到14决赛,对抗就很激烈了,每一场都是硬仗,打起来会非常好看。在女子组……我的生活不过如此,我的生命不过如此疫情静默前后的差别有没有?有,又好像没有。因为,静默之前无非就是想去哪里一按电钮就去了,封控之后,去哪儿都只是想想。其实,小区没封控时你坐在轮椅上晒太阳,封控了你还……养老金上调4,安徽省2022年调整方案有何变化?历年方案一览自从人社部表示2022年退休职工人均养老金增加4以后,大家最关心的莫过于本省什么时候出方案?具体怎么调整?目前安徽省人社厅官网尚未发布调整方案。安徽作为中部强省,合肥市也……美的像一幅画样的丽江,是我那些年最美好的回忆缘起(属于苍山洱海边的回忆)时间过得太快了,光阴倏尔,云卷云舒,眨眼间我又从古城的天空回到了长江边,那些流连变成山川湖海的记忆,从文字夹缝中慢慢探出头来。需要远行,……我整理了618手机购买攻略,并且附上20款以上高性价手机推荐每年618都是购买手机的好时机,但近年来这段时期的各种预售购买方案层出不穷,很多人都不清楚怎么买才是最优惠的,也不知道自己买的商品到底有没有降价。我这里整理一些今年发布的高性价……中国摄影之乡观察专业化出圈年轻化破圈云和梯田丽水市委宣传部供图中新网丽水11月16日电(项菁周健)远山青黛间,云和梯田层层叠叠;飘渺云海下,仙都鼎湖峰如梦似幻;千岩万转中,缙云石宕留下历史印迹在一次次快门声……
友情链接:中准网聚热点快百科快传网快生活快软网快好知文好找