电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

簡述Java中的四種引用類型

瀏覽:2日期:2022-08-14 14:51:16
簡介

從JDK1.2版本開始,把對象的引用分為四種級別,從而使程序能更加靈活的控制對象的生命周期。這四種級別由高到低依次為:強引用、軟引用、弱引用和虛引用,下面分別介紹下這四種引用。

強引用

強引用是最常用的引用類型,如下所示,new Object()會創建一個Object對象并存儲在堆上,變量object存儲對該對象的強引用。

Object object = new Object();

強引用不會被垃圾回收,所以要想回收該對象,則應該將指向該對象的變量顯示設為null,這樣該對象就由強引用轉變為無引用了。

示例:

public class ReferenceDemo { public static void main(String[] args) throws IOException {//強引用不會被垃圾回收ReferenceDemo referenceDemo = new ReferenceDemo();//強引用轉變為無引用,無引用可被垃圾回收referenceDemo = null;//觸發垃圾回收System.gc();//阻塞主線程,等待垃圾回收線程執行System.in.read(); } //對象被回收之前調用 @Override protected void finalize() throws Throwable {super.finalize();System.out.println('-----finalize-----'); }}軟引用

軟引用是使用SoftReference創建的,在內存空間充足的情況下,軟引用不會被回收,而在內存空間不足虛擬機拋出OutOfMemoryError之前,軟引用將會被回收。

示例:

public class ReferenceDemo { public static void main(String[] args) throws InterruptedException {//創建ReferenceDemo對象的軟引用SoftReference<ReferenceDemo> softReference = new SoftReference<>(new ReferenceDemo());//觸發垃圾回收System.gc();//阻塞主線程,等待垃圾回收線程執行Thread.sleep(5000);//softReference.get()返回軟引用對象,如果對象已經被垃圾回收,則返回nullSystem.out.println(softReference.get());//創建25M的字節數組byte[] bytes = new byte[1024 * 1024 * 25];//內存已經不足,阻塞主線程,等待垃圾回收線程執行Thread.sleep(5000);//重新輸出軟引用對象System.out.println(softReference.get()); }}/* * 輸出結果: * com.buhe.demo.demos.reference.ReferenceDemo@76fb509a * null */

注意:示例運行前需要設置堆內存大小為30M(-Xmx30m -Xms30m)。

用途:軟引用可以用于對內存空間敏感的緩存,緩存的對象一直保存,直到內存空間不足而被回收。

弱引用

弱引用是使用WeakReference創建的,在垃圾回收線程執行過程中,只要找到了弱引用,不管內存空間是否足夠,弱引用對象都將被回收。由于垃圾回收線程是一個優先級很低的線程,因此不一定會很快發現那些只具有弱引用的對象。

示例:

public class ReferenceDemo { public static void main(String[] args) throws InterruptedException {//創建ReferenceDemo的弱引用WeakReference<ReferenceDemo> weakReference = new WeakReference<>(new ReferenceDemo());//weakReference.get()返回弱引用對象,如果對象已經被垃圾回收,則返回nullSystem.out.println(weakReference.get());//觸發垃圾回收System.gc();//阻塞主線程,等待垃圾回收線程執行Thread.sleep(3000);//重新輸出弱引用對象System.out.println(weakReference.get()); }}/* * 輸出結果: * com.buhe.demo.demos.reference.ReferenceDemo@76fb509a * null */

用途:弱引用也可以用于緩存,可以參考WeakHashMap類。

虛引用

虛引用是使用PhantomReference創建的,它是所以引用類型中最弱的。虛引用對象和沒有引用的對象相同,可以在任何時候被垃圾回收,并且虛引用必須要與引用隊列一起使用。

當垃圾回收線程回收一個虛引用對象時,它將在垃圾回收后銷毀該對象,并將PhantomReference添加到引用隊列中。

示例:

public class ReferenceDemo { public static void main(String[] args) throws InterruptedException {//創建引用隊列ReferenceQueue<Object> referenceQueue = new ReferenceQueue();//創建ReferenceDemo的虛引用PhantomReference<ReferenceDemo> phantomReference = new PhantomReference<>(new ReferenceDemo(), referenceQueue);//phantomReference.get()總是返回nullSystem.out.println('phantomReference.get():' + phantomReference.get());//輪詢此隊列,查看是否有可用的Reference對象,有則返回該對象,否則返回nullSystem.out.println('referenceQueue.poll():' + referenceQueue.poll());//觸發垃圾回收System.gc();//阻塞主線程,等待垃圾回收線程執行Thread.sleep(3000);System.out.println('------垃圾回收之后------');System.out.println('phantomReference.get():' + phantomReference.get());System.out.println('referenceQueue.poll():' + referenceQueue.poll()); }}/* * 輸出結果: * phantomReference.get():null * referenceQueue.poll():null * ------垃圾回收之后------ * phantomReference.get():null * referenceQueue.poll():java.lang.ref.PhantomReference@76fb509a */

用途:虛引用可以用于精確的檢測對象何時從內存中刪除,通過檢查引用隊列來判斷對象是否已經被回收。

以上就是簡述Java中的四種引用類型的詳細內容,更多關于Java 引用類型的資料請關注好吧啦網其它相關文章!

標簽: Java
相關文章:
主站蜘蛛池模板: 办公室装修_上海办公室设计装修_时尚办公新主张-后街印象 | 全自动端子机|刺破式端子压接机|全自动双头沾锡机|全自动插胶壳端子机-东莞市傅氏兄弟机械设备有限公司 | 免费个人pos机申请办理-移动pos机刷卡-聚合收款码办理 | 深圳市简易检测技术有限公司| 云南丰泰挖掘机修理厂-挖掘机维修,翻新,再制造的大型企业-云南丰泰工程机械维修有限公司 | 浙江富广阀门有限公司| 冷水机,风冷冷水机,水冷冷水机,螺杆冷水机专业制造商-上海祝松机械有限公司 | 避光流动池-带盖荧光比色皿-生化流动比色皿-宜兴市晶科光学仪器 东莞爱加真空科技有限公司-进口真空镀膜机|真空镀膜设备|Polycold维修厂家 | 混合气体腐蚀试验箱_盐雾/硫化氢/气体腐蚀试验箱厂家-北京中科博达 | pbt头梳丝_牙刷丝_尼龙毛刷丝_PP塑料纤维合成毛丝定制厂_广州明旺 | GEDORE扭力螺丝刀-GORDON防静电刷-CHEMTRONICS吸锡线-上海卓君电子有限公司 | 立式壁挂广告机厂家-红外电容触摸一体机价格-华邦瀛 | 软瓷_柔性面砖_软瓷砖_柔性石材_MCM软瓷厂家_湖北博悦佳软瓷 | 河南mpp电力管_mpp电力管生产厂家_mpp电力电缆保护管价格 - 河南晨翀实业 | 手术示教系统-数字化手术室系统-林之硕医疗云智能视频平台 | 塑料造粒机「厂家直销」-莱州鑫瑞迪机械有限公司 | 游动电流仪-流通式浊度分析仪-杰普仪器(上海)有限公司 | LED太阳能中国结|发光红灯笼|灯杆造型灯|节日灯|太阳能灯笼|LED路灯杆装饰造型灯-北京中海轩光电 | RO反渗透设备_厂家_价格_河南郑州江宇环保科技有限公司 | 精密模具加工制造 - 富东懿 | 无痕胶_可移胶_无痕双面胶带_可移无痕胶厂家-东莞凯峰 | 便携式高压氧舱-微压氧舱-核生化洗消系统-公众洗消站-洗消帐篷-北京利盟救援 | 北京公寓出租网-北京酒店式公寓出租平台 | 篷房[仓储-婚庆-展览-活动]生产厂家-江苏正德装配式帐篷有限公司 | EFM 022静电场测试仪-套帽式风量计-静电平板监测器-上海民仪电子有限公司 | MTK核心板|MTK开发板|MTK模块|4G核心板|4G模块|5G核心板|5G模块|安卓核心板|安卓模块|高通核心板-深圳市新移科技有限公司 | 小小作文网_中小学优秀作文范文大全| 板式换网器_柱式换网器_自动换网器-郑州海科熔体泵有限公司 | 玻璃钢格栅盖板|玻璃钢盖板|玻璃钢格栅板|树篦子-长沙川皖玻璃钢制品有限公司 | 拉力机-拉力试验机-万能试验机-电子拉力机-拉伸试验机-剥离强度试验机-苏州皖仪实验仪器有限公司 | 电磁辐射仪-电磁辐射检测仪-pm2.5检测仪-多功能射线检测仪-上海何亦仪器仪表有限公司 | 上海单片机培训|重庆曙海培训分支机构—CortexM3+uC/OS培训班,北京linux培训,Windows驱动开发培训|上海IC版图设计,西安linux培训,北京汽车电子EMC培训,ARM培训,MTK培训,Android培训 | 智能垃圾箱|垃圾房|垃圾分类亭|垃圾分类箱专业生产厂家定做-宿迁市传宇环保设备有限公司 | 生物颗粒燃烧机-生物质燃烧机-热风炉-生物颗粒蒸汽发生器-丽水市久凯能源设备有限公司 | 臭氧发生器_臭氧消毒机 - 【同林品牌 实力厂家】 | 成都思迪机电技术研究所-四川成都思迪编码器 | 手持式浮游菌采样器-全排二级生物安全柜-浙江孚夏医疗科技有限公司 | 高效节能电机_伺服主轴电机_铜转子电机_交流感应伺服电机_图片_型号_江苏智马科技有限公司 | 背压阀|减压器|不锈钢减压器|减压阀|卫生级背压阀|单向阀|背压阀厂家-上海沃原自控阀门有限公司 本安接线盒-本安电路用接线盒-本安分线盒-矿用电话接线盒-JHH生产厂家-宁波龙亿电子科技有限公司 | 越南专线物流_东莞国际物流_东南亚专线物流_行通物流 | 河南凯邦机械制造有限公司 |