大战熟女丰满人妻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://m.dabaquan.cn/video.html

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

 

 相關文章

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

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

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

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

Java編程初學者要如何進階

 

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

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 色综合天天综久久久噜噜噜久久〔 | 成人亚洲国产 | 天天舔天天射天天干 | 超激情碰碰碰啪在线视频 | 日本久色 | 国产一区二区精品久久 | 国产特级毛片 | 伊人色院成人蜜桃视频 | 欧美人与动性xxxxbbbb | 好吊妞在线成人免费 | 在线久久 | 国产精品玖玖玖在线观看 | 91日韩 | 欧洲成人免费高清视频 | 一本大道久久a久久综合 | 99久久免费精品 | 亚洲国产精品高清在线一区 | 一本一本久久α久久精品66 | 成人免费视频日本 | 尹人香蕉99久久综合网站 | 99九九精品国产高清自在线 | 亚洲欧美国产毛片在线 | 九九亚洲 | 福利视频中文在线观看 | 亚洲欧美精品日韩欧美 | 久久久不卡国产精品一区二区 | 色狠狠成人综合网 | 四虎hu| 国产成人亚洲影视在线 | 999精品在线 | 97影院秋霞国产精品 | 国产激情| 青青青视频精品中文字幕 | 久久老色鬼天天综合网观看 | 日本一线一区二区三区免费视频 | 久久久久国产一级毛片高清片 | 久久久久久久久久久9精品视频 | 久久机热一这里只精品 | 国产青草视频免费观看97 | 五月婷婷在线视频观看 | 欧美亚洲国产精品第一页 |