大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節點LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 學習攻略 Java培訓 Java培訓教程:Java的引用類型

Java培訓教程:Java的引用類型

更新時間:2019-12-18 16:30:09 來源:動力節點 瀏覽2503次

 

Java培訓教程:Java的引用類型

 

1.java的引用類型分為強引用,軟引用,和弱引用以及虛引用.

  創建強引用

String text=new String("123");

  利用=號來創建強引用

  創建軟引用

SoftReferencesfr=new SoftReference(text);

  針對上面的對象創建了一個軟引用,相當于對于同一個對象123,創建了兩個引用,分別是強引用和軟引用

  創建弱引用

WeakReferencewrf=new WeakReference(text);

  同理,針對同一個變量創建三個引用,分別是強引用,軟引用和弱引用

  另外還有最后一個虛引用,這里省略

2.關于四種引用,不同情況還有一種特性叫作及物性

  例如,不管對于一個變量,創建了多少種引用,只要存在強引用,那么這個變量就叫做強及物性,針對這種情況,垃圾回收器,也就是gc,是永遠不會回

收這種變量的.

  假如,驅除了強引用,只剩下了軟引用和弱引用,那么這時候這個變量就叫做軟及物,針對這種情況,gc只有在內存不夠的情況下,才會回收變量

  最后,驅除了強引用和軟引用,只剩下弱引用的時候,gc只要發現了這個變量,就會馬上回收內存.

3.案例演示

①案例一:

//在堆里面創建一個對象,即是 new String(),同時也會在常量池里面創建一個常量,即是123; 并且String text指向的是堆里面的對象

String text=new String("123");

//創建軟引用

SoftReferencesfr=new SoftReference(text);

//創建弱引用

WeakReferencewrf=new WeakReference(text);

//這時候,變量是屬于強引用.

System.out.println(text);

②案例二:

//在堆里面創建一個對象,即是 new String(),同時也會在常量池里面創建一個常量,即是123; 并且String text指向的是堆里面的對象

String text=new String("123");

//創建軟引用

SoftReferencesfr=new SoftReference(text);

//創建弱引用

WeakReferencewrf=new WeakReference(text);

//這時候,變量是屬于強引用.

System.out.println(text);

//這時候驅除了強引用,也就是變量屬于軟引用,當內存不夠的時候,gc才會回收

text=null;

//打印輸出變量的取值

System.out.println(sfr.get());

System.out.println(wrf.get());

//這時候是可以輸出123的效果的.

③案例三:

//在堆里面創建一個對象,即是 new String(),同時也會在常量池里面創建一個常量,即是123; 并且String text指向的是堆里面的對象

String text=new String("123");

//創建軟引用

SoftReferencesfr=new SoftReference(text);

//創建弱引用

WeakReferencewrf=new WeakReference(text);

//這時候,變量是屬于強引用.

System.out.println(text);

//這時候驅除了強引用,也就是變量屬于軟引用,當內存不夠的時候,gc才會回收

text=null;

//這時候去除了軟引用,也就是說變量是屬于弱引用,只要gc發現了該變量,就會回收該內存

sfr.clear();

//調用gc來回收變量,理論上,雖然即是調用了gc,但是gc也不是馬上會運行的,她自己會負責垃圾的回收.但是其實,一般來說,只要調用了gc,一般

來說,gc是會馬上運行的

System.gc();

//這時候,弱引用是拿不到值的,因為,前面調用了gc,而gc發現了變量,就會馬上回收內存,所以說變量已經不存在了,自然就沒有取值了.所以下面

代碼輸出為null

System.out.println(wrf.get());

注意點:

gc回收的內存是只針對堆里面的,

  所以假如我們一開始的變量是這樣創建的,是可以被回收的.

String text=new String("123");

  但是假如我們的變量是這樣子創建了,gc就無法回收內存了,而且弱引用仍舊可以輸出123的值

String text="123"

  這代碼只是在常量池里面創建了常量123,并沒有在堆里面創建了變量new String,所以只針對堆的內存回收的gc自然就不起效果了,也就導致了常量123沒有被回收,所以弱引用還可以輸出值

 

Java培訓教程:Java的引用類型

   以上就是動力節點Java培訓機構小編介紹的“Java培訓教程:Java的引用類型”的內容,希望對大家有幫助,如有疑問,請在線咨詢,有專業老師隨時為你服務。

       Java全套自學資料

       Java自學視頻教程(免費下載學習):http://www.dabaquan.cn/video.html

      Java技術教程:http://www.dabaquan.cn/tutorial/

 

 相關文章

零基礎怎么自學Java,完整版Java學習路線圖

你還在糾結學Java,是自學還是去培訓班嗎

一個標準的Java程序員如何進階?

Java學習路線清單,快速進階Java

Java編程初學者要如何進階

 

提交申請后,顧問老師會電話與您溝通安排學習

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: jizzjizzjizz孕妇| 婷婷综合网站 | 亚洲精品日本一区二区在线 | 劲爆欧美色欧美 | 亚洲精品一区二区三区中文字幕 | 奇米狠狠| 99r精品 | 女bbbbxxx | 久久大香香蕉国产免费网vrr | 久久香蕉国产线看观看精品蕉 | 高清不卡免费一区二区三区 | 天天爽天天爽 | 99国产情在线视频 | 欧美午夜性春 | 中文字幕免费视频精品一 | 在线不卡福利 | 国产一区国产二区国产三区 | 国产女人又爽又大 | 在线观看欧美精品 | 国产一级淫片a免费播放口欧美 | 日韩新片王 | 亚洲日韩视频 | 国产一区 在线视频 | 香蕉尹人综合精品 | 成年人国产网站 | 免费视频网站一级人爱视频 | 国内精品视频在线观看 | 色鬼久久 | 天天摸天天碰色综合网 | 亚洲综合色dddd26 | 久久综合九色综合欧洲色 | 久久久久久久久中文字幕 | 精品在线免费视频 | 亚洲欧美一区二区三区在饯 | 国产福利免费观看 | 国产偷视频 | 国内精品视频在线播放一区 | 狠狠色丁香久久婷婷综合_中 | 亚洲精品午夜久久久伊人 | 四虎影院免费在线 | 女孕学护士一级毛片 |