日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

什么是java四大引用?

發布時間:2024/9/30 编程问答 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 什么是java四大引用? 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

相信現在有很多人正在學習java編程語言,其中java的四大引用相信很多同學都不是非常熟悉,那么什么是java四大引用?來看看下面的詳細介紹。

什么是java四大引用?是JDK1.2版本開始引入,把對象的引用分為4個等級,我們平時學習的就是四種的第一級的強引用,說白了,就Object o = new Object(),四個引用分別是強引用、軟引用、弱引用和虛引用,請記住它們的順序!因為這是它們對內存的敏感程度!

java

等級: 強 > 軟 > 弱 > 虛

它們有什么作用?

·靈活的控制對象的生命周期

·提高對象的回收機率

理論加代碼分析:

1、什么是強引用?

強引用就是我們平時使用的對象方式,也是使用最多的一種方式,請記住不管內存緊張也罷,不足也罷,gc永不回收強引用的對象, 即使jvm 出現(內存溢出錯誤)OutOfMemoryError,使程序停止,也不會回收對象來提高內存

代碼

public class StrongReferenceDemo {

public static void main(String[] args) {

Integer data = new Integer(4);

String str = “123”;

Student student = new Student();

//以上三個對象都是強引用對象,指我們平時使用的對象方式

}

}

class Student {

}

2. 什么是軟引用?

對象具備軟引用,請記住,只要內存足夠,我們不對對象回收,但是當內存不足,gc對軟引用對象進行回收可以看出軟引用對內存很敏感,可用來高速緩存,同時它可以結合隊列使用,如果軟引用被gc回收,jvm就會把軟引用加入到隊列中。

代碼

public class Demo {

public static void main(String[] args) {

String ss = “hello”;

//這時"hello"有一個強引用, 還有一個軟引用

//泛型指的是軟引用指向的類型

//軟引用是內存不足時,對象被回收

SoftReferencesoft = new SoftReference(ss);

//獲取軟引用的對象

String content = soft.get();

System.out.println(content);

ss = null; //強引用沒有了,這時只有軟引用指向"hello"

System.gc(); //強制回收

System.gc();

System.gc();

content = soft.get();//看看有沒有被回收

}

}

3.什么是弱引用?

gc不內存是發現弱引用,就會立刻回收弱引用對象,但是我們知道gc是一個優先級很低的線程,所以不一定立刻發現并回收弱引用對象,但記住,只要被gc發現弱引用,不管內存夠不夠,直接回收,同時,弱引用,也可以結合隊列使用,當被回收,就進去于之關聯的隊列中。

代碼

public class WeakReference {

public static void main(String[] args) {

String ss = “hello”;

ReferenceQueuequeue = new ReferenceQueue<>();

java.lang.ref.WeakReferenceweak = new

java.lang.ref.WeakReference(ss,queue);

System.out.println("現在的引用 " + weak.get());

ss = null;

System.gc(); //gc

Reference poll = queue.poll(); //如果null,說明被回收了

if(poll != null) {

String content = poll.get();

System.out.println(content);

} //看看有沒有被回收

}

}

4.什么是虛引用?

虛引用和前面的軟引用、弱引用不同,它并不影響對象的生命周期。在java中用java.lang.ref.PhantomReference類表示。如果一個對象與虛引用關聯,則跟沒有引用與之關聯一樣,在任何時候都可能被垃圾回收器回收。

要注意的是,虛引用必須和引用隊列關聯使用,當垃圾回收器準備回收一個對象時,如果發現它還有虛引用,就會把這個虛引用加入到與之 關聯的引用隊列中。程序可以通過判斷引用隊列中是否已經加入了虛引用,來了解被引用的對象是否將要被垃圾回收。如果程序發現某個虛引用已經被加入到引用隊列,那么就可以在所引用的對象的內存被回收之前采取必要的行動。

import java.lang.ref.PhantomReference;

import java.lang.ref.ReferenceQueue;

public class Main {

public static void main(String[] args) {

ReferenceQueuequeue = new ReferenceQueue();

PhantomReferencepr = new PhantomReference(newString(“hello”), queue);

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

}

}
  
本文來自千鋒教育,轉載請注明出處。

與50位技術專家面對面20年技術見證,附贈技術全景圖

總結

以上是生活随笔為你收集整理的什么是java四大引用?的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。