A. java 幾種引用類型學習

1)強引用(StrongReference)
強引用是使用最普遍的引用。如果一個對象具有強引用,那垃圾回收器絕不會回收它。當內存空間不足,Java虛擬機寧願拋出OutOfMemoryError錯誤,使程序異常終止,也不會靠隨意回收具有強引用的對象來解決內存不足的問題。

2)軟引用(SoftReference)
如果一個對象只具有軟引用,則內存空間足夠,垃圾回收器就不會回收它;如果內存空間不足了,就會回收這些對象的內存。只要垃圾回收器沒有回收它,該對象就可以被程序使用。軟引用可用來實現內存敏感的高速緩存(下文給出示例)。
軟引用可以和一個引用隊列(ReferenceQueue)聯合使用,如果軟引用所引用的對象被垃圾回收器回收,Java虛擬機就會把這個軟引用加入到與之關聯的引用隊列中。

3) 弱引用(WeakReference)
弱引用與軟引用的區別在於:弱引用的對象擁有更短暫的生命周期。在垃圾回收器線程掃描它所管轄的內存區域的過程中,一旦發現了只具有弱引用的對象,不管當前內存空間足夠與否,都會回收它的內存。不過,由於垃圾回收器是一個優先順序很低的線程,因此不一定會很快發現那些只具有弱引用的對象。
弱引用可以和一個引用隊列(ReferenceQueue)聯合使用,如果弱引用所引用的對象被垃圾回收,Java虛擬機就會把這個弱引用加入到與之關聯的引用隊列中。

4)虛引用(PhantomReference)
「虛引用」顧名思義,就是形同虛設,與其他幾種引用都不同,虛引用並不會決定對象的生命周期。如果一個對象僅持有虛引用,那麼它就和沒有任何引用一樣,在任何時候都可能被垃圾回收器回收。
虛引用主要用來跟蹤對象被垃圾回收器回收的活動。虛引用與軟引用和弱引用的一個區別在於:虛引用必須和引用隊列(ReferenceQueue)聯合使用。當垃圾回收器准備回收一個對象時,如果發現它還有虛引用,就會在回收對象的內存之前,把這個虛引用加入到與之 關聯的引用隊列中。

程序可以通過判斷引用隊列中是否已經加入了虛引用,來了解被引用的對象是否將要被垃圾回收。如果程序發現某個虛引用已經被加入到引用隊列,那麼就可以在所引用的對象的內存被回收之前採取必要的行動。

B. java中的虛引用,有什麼作用

個人理解:深來入理解JAVA虛擬機一書源中有這樣一句描述:「為一個對象設置虛引用關聯的唯一目的就是能在這個對象被收集器回收時收到一個系統通知」。所以虛引用更多的是用於對象回收的監聽,能做的功能如下:

  1. 重要對象回收監聽 進行日誌統計

  2. 系統gc監聽 因為虛引用每次GC都會被回收,那麼我們就可以通過虛引用來判斷gc的頻率,如果頻率過大,內存使用可能存在問題,才導致了系統gc頻繁調用

參考Java幽靈引用的作用

C. java的方法調用有哪幾種

就三種啊!!
普通調用
對象.方法()
靜態方法 就可以 類.方法()
自身調用 或者繼承 的調用是
直接 方法()

D. 分析java對象的幾種引用(reference)

java對象的引用reference分為有強引用,軟引用,弱引用,虛引用這幾種形式。1、Soft Reference(軟引用) 指到的對象,即使沒有任何Direct Reference,也不會清除,一直到jvm內存不足且沒有Direct Reference時候才會清除。 應用場景:常用來設計緩存,不但可以將對象緩存起來,也不會容易造成內存不足。2、Weak Reference(弱引用) GC一旦發現了弱引用關系進行就開始收集對象。 應用場景:想查看某些對象信息,又不想影響GC對其的收集工作。 與GC的交互: 1.將referent置為null引用; 2.將堆中的目標對象設置為finalizable(可結束的); 3.先執行finalize(),釋放內存,軟引用添加到RefernceQueue中。 ReferenceQueue在 soft renference和 weak reference中可以為null,但虛應用中必須有!3、PhantomReference(虛引用) 與GC的交互: 1.不將referent置為null引用;而是將堆中的目標對象設置為finalizable(可結束的); 2.先軟引用添加到RefernceQueue中。然後收集對象,釋放內存 附註:ReferenceQueue在 soft renference和 weak reference中可以為null,但虛引用中必須有!4、抽象類Reference分析 java.lang.ref包中有四個類,他們的關系是PhantomReference,WeakReference,SoftReference繼承了抽象類Reference。Reference類中,有thread子類(ReferenceHandler),並在靜態區域中開啟,對pending欄位進行實時的監控。 pending是由jvm來賦值的,當Reference內部的referent對象的可達狀態改變時,jvm會將Reference對象放入pending鏈表。 一旦relevent= null,垃圾收集時會標記WeakReference的referent為不可達get()返回null,並且通過賦值給pending ,觸發ReferenceHandler線程處理pending。 ReferenceHandler線程要做的是將pending對象enqueue,但默認我們所提供的queue,也就是從構造函數傳入的是null,實際是使用了ReferenceQueue.NULL,Handler線程判斷queue為ReferenceQueue.NULL則不進行操作,只有非ReferenceQueue.NULL 的queue才會將Reference進行enqueue。 希望通過以上內容的介紹,能夠給你帶來幫助。

E. java語言中,怎樣引用包和其中的類有幾種方式列舉一個引用包的實例

import 關鍵字導包,後面寫上相應的路徑就行了

F. java中虛引用是怎麼回事

虛引用可以用來做一些精細的內存控制操作。
你聲明虛引用的時候是要傳入一個queue的。當你的虛引用所引用的對象已經執行完finalize函數的時候,就會把對象加到queue裡面。你可以通過判斷queue裡面是不是有對象來判斷你的對象是不是要被回收了【這是重點,讓你知道你的對象什麼時候會被回收。因為對普通的對象,gc要回收它的,你是知道它什麼時候會被回收】。

知道弱引用和軟引用的概念與如何使用它們是兩碼事,引用類在垃圾回收工作的過程中有重要作用。我們都知道垃圾回收器會回收符合回收條件的對象的內存,但並不是所有的程序員都知道回收條件取決於指向該對象的引用類型。這正是Java中弱引用和軟引用的主要區別。如果一個對象只有弱引用指向它,垃圾回收器會立即回收該對象,這是一種急切回收方式。相對的,如果有軟引用指向這些對象,則只有在JVM需要內存時才回收這些對象。弱引用和軟引用的特殊行為使得它們在某些情況下非常有用。例如:軟引用可以很好的用來實現緩存,當JVM需要內存時,垃圾回收器就會回收這些只有被軟引用指向的對象。而弱引用非常適合存儲元數據,例如:存儲ClassLoader引用。如果沒有類被載入,那麼也沒有指向ClassLoader的引用。一旦上一次的強引用被去除,只有弱引用的ClassLoader就會被回收。這篇文章中我們將講述不同類型的Java引用,例如:強引用(Strong Reference)和虛引用(PhantomReference)。
Java中弱引用VS軟引用
Java中有如下四種類型的引用:
1.強引用(Strong Reference)
2.弱引用(WeakReference)
3.軟引用(SoftReference)
4.虛引用(PhantomReference)
強引用是我們在編程過程中使用的最簡單的引用,如代碼String s=」abc」中變數s就是字元串對象」abc」的一個強引用。任何被強引用指向的對象都不能被垃圾回收器回收,這些對象都是在程序中需要的。弱引用使用java.lang.ref.WeakReference class 類來表示,你可以使用如下代碼創建弱引用:
代碼如下:

Counter counter = new Counter(); // strong reference - line 1
WeakReference<Counter> weakCounter = new WeakReference<Counter>(counter); //weak reference
counter = null; // now Counter object is eligible for garbage collection
現在只要你給強引用對象counter賦空值null,該對象就可以被垃圾回收器回收。因為該對象此時不再含有其他強引用,即使指向該對象的弱引用weakCounter也無法阻止垃圾回收器對該對象的回收。相反的,如果該對象含有軟引用,Counter對象不會立即被回收,除非JVM需要內存。Java中的軟引用使用java.lang.ref.SoftReference類來表示,你可以使用如下代碼創建軟引用:
代碼如下:

Counter prime = new Counter(); // prime holds a strong reference – line 2
SoftReference soft = new SoftReference(prime) ; //soft reference variable has SoftReference to Counter Object created at line 2

prime = null; // now Counter object is eligible for garbage collection but only be collected when JVM absolutely needs memory
強引用置空之後,代碼的第二行為對象Counter創建了一個軟引用,該引用同樣不能阻止垃圾回收器回收對象,但是可以延遲回收,與弱引用中急切回收對象不同。鑒於軟引用和弱引用的這一區別,軟引用更適用於緩存機制,而弱引用更適用於存貯元數據。另一個使用弱引用的例子是WeakHashMap,它是除HashMap和TreeMap之外,Map介面的另一種實現。WeakHashMap有一個特點:map中的鍵值(keys)都被封裝成弱引用,也就是說一旦強引用被刪除,WeakHashMap內部的弱引用就無法阻止該對象被垃圾回收器回收。
虛引用是java.lang.ref package包中第三種可用的引用,使用java.lang.ref.PhantomReference類來表示。擁有虛引用的對象可以在任何時候被垃圾回收器回收。和弱引用和軟引用相似,你可以通過如下代碼創建虛引用:
代碼如下:

DigitalCounter digit = new DigitalCounter(); // digit reference variable has strong reference – line 3
PhantomReference phantom = new PhantomReference(digit); // phantom reference to object created at line 3

digit = null;
一旦移除強引用,第三行的DigitalCounter對象可以在任何時候被垃圾回收器回收。因為只有一個虛引用指向該對象,而虛引用無法阻止垃圾回收器回收對象。
除了了解弱引用、軟引用、虛引用和WeakHashMap,還需要了解ReferenceQueue。在創建任何弱引用、軟引用和虛引用的過程中你可以通過如下代碼提供引用隊列ReferenceQueue:
代碼如下:

ReferenceQueue refQueue = new ReferenceQueue(); //reference will be stored in this queue for cleanup
DigitalCounter digit = new DigitalCounter();
PhantomReference<DigitalCounter> phantom = new PhantomReference<DigitalCounter>(digit, refQueue);
引用實例被添加在引用隊列中,你可以再任何時候通過查詢引用隊列回收對象。一個對象的生命周期可以通過下圖進行描述:

在新窗口打開圖片

這就是Java中弱引用和軟引用的區別。我們還學到了一些基本的引用類:弱引用、軟引用、虛引用以及WeakHashMap和WeakHashMap。總之,合理的使用引用可以幫助垃圾回收器更好的管理Java內存。

G. Java引用類型有哪幾種

除了基本類型以外的都是引用
基本類型有int char boolean long .....等等,都是小寫開頭,而類的話都是大寫開頭的
類的引用都是引用的某個對象的地址

H. Java類型中的引用數據類型有幾種,分別是哪些

一、類(class)
二、介面(interface)
三、數組(元素類型 [])

I. java有幾種對象引用

1.強引用(StrongReference)
強引用是java中最常見的一種引用方式,當一個程序創建一個對象,並把這個對象賦給一個引用變數,程序通過該引用變數操作實際的對象.當一個對象被一個或一個以上的引用變數所引用時,它處於可達狀態,不可能被系統垃圾回收機制回收。
2.軟引用(SoftReference)
軟引用需要通過SoftReference類來實現,當一個對象只有軟引用時,它有可能被垃圾回收機制回收。對於只有軟引用的對象而言,當系統內存空間足夠時,它不會被系統回收,程序也可使用該對象;當系統內存空間不足時,系統可能會回收它。軟引用通常用於對內存比較敏感的程序中。
3.弱引用(WeakReference)
弱引用通過WeakReference類實現,弱引用和軟引用很像,但弱引用的引用級別更低。對於只有弱引用的對象而言,當系統垃圾回收機制運行時,不管系統內存是否足夠,總會回收該對象所佔用的內存。當然,並不是說當一個對象只有弱引用時,它就會立即被回收——正如那些失去引用的對象一樣,必須等到系統垃圾回收機制運行時才會被回收。
4.虛引用(PhantomReference)
虛引用通過PhantomReference類實現,虛引用完全類似於沒有引用。虛引用對對象本身沒有太大影響,對象甚至感覺不到虛引用的存在。如果一個對象只有一個虛引用時,那麼它和沒有引用的效果大致相同。虛引用主要用於跟蹤對象被垃圾回收的狀態,虛引用不能單獨使用,虛引用必須和引用隊列聯合使用

J. Java中的幾種引用方式

1)強引用(StrongReference)
強引用是使用最普遍的引用。如果一個對象具有強引用,那垃圾回收器絕不會回收它。當內存空間不足,Java虛擬機寧願拋出OutOfMemoryError錯誤,使程序異常終止,也不會靠隨意回收具有強引用的對象來解決內存不足的問題。
2)軟引用(SoftReference)
如果一個對象只具有軟引用,則內存空間足夠,垃圾回收器就不會回收它;如果內存空間不足了,就會回收這些對象的內存。只要垃圾回收器沒有回收它,該對象就可以被程序使用。
所以,軟引用可用來實現內存敏感的高速緩存。
軟引用可以和一個引用隊列(ReferenceQueue)聯合使用,如果軟引用所引用的對象被垃圾回收器回收,Java虛擬機就會把這個軟引用加入到與之關聯的引用隊列中。
3)弱引用(WeakReference)
弱引用與軟引用的區別在於:弱引用的對象擁有更短暫的生命周期。
在垃圾回收器線程掃描它所管轄的內存區域的過程中,一旦發現了只具有弱引用的對象,不管當前內存空間足夠與否,都會回收它的內存。不過,由於垃圾回收器是一個優先順序很低的線程,因此不一定會很快發現那些只具有弱引用的對象。
弱引用可以和一個引用隊列(ReferenceQueue)聯合使用,如果弱引用所引用的對象被垃圾回收,Java虛擬機就會把這個弱引用加入到與之關聯的引用隊列中。
4)虛引用(PhantomReference)
「虛引用」顧名思義,就是形同虛設,與其他幾種引用都不同,虛引用並不會決定對象的生命周期。
如果一個對象僅持有虛引用,那麼它就和沒有任何引用一樣,在任何時候都可能被垃圾回收器回收。
虛引用主要用來跟蹤對象被垃圾回收器回收的活動。
虛引用與軟引用和弱引用的一個區別在於:
虛引用必須和引用隊列(ReferenceQueue)聯合使用。當垃圾回收器准備回收一個對象時,如果發現它還有虛引用,就會在回收對象的內存之前,把這個虛引用加入到與之關聯的引用隊列中。
程序可以通過判斷引用隊列中是否已經加入了虛引用,來了解被引用的對象是否將要被垃圾回收。如果程序發現某個虛引用已經被加入到引用隊列,那麼就可以在所引用的對象的內存被回收之前採取必要的行動。