大战熟女丰满人妻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編程初學者要如何進階

 

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

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 九九热中文字幕 | 亚洲一区天堂 | 日本不卡中文字幕 | 日日拍夜夜嗷嗷叫国产 | 99干99| 免费的一级毛片 | 色 在线播放 | 欧美一区精品二区三区 | 99久在线 | 日本高清中文字幕视频在线 | 色综合久久综精品 | 久久久久亚洲精品影视 | 精品福利在线观看 | 欧洲激情乱子伦 | 久久久久香蕉视频 | 国产成人免费a在线视频色戒 | 日韩日b视频| 高清毛片免费看 | 国产成人精品免费视频 | 久久久综合九色合综 | 女bbbbxxxx另类亚洲 | 四虎天堂| 国内精品久久影视 | 牛牛影院成人网 | 国产伦码精品一区二区三区 | 97影院理论片 | 劲爆激情欧美毛片 | 五月婷婷激情 | 欧美一级视频免费观看 | 天天干天天爽 | 福利影院在线 | 国产a不卡片精品免费观看 国产a高清 | 深夜免费在线观看 | 四虎影视国产精品 | 91成人影院未满十八勿入 | 一国产大片在线观看 | 在线欧美一区 | 亚洲欧美久久精品1区2区 | 91成人国产| 久久久久久久久久久9精品视频 | 色琪琪永久远网址 |