什麼是Java的弱引用(Weak Reference)
阿新 • • 發佈:2019-02-02
之前一直沒有接觸過弱引用這個概念,今天看到以後覺得挺新鮮,就查了查資料總結一下,希望對大家有所幫助。
要理解弱引用,首先要先了解一下強引用(Strong Reference), 其實我之前也並不瞭解強引用,雖然天天都在用。舉例來說:
弱引用就是不保證不被垃圾回收器回收的物件,它擁有比較短暫的生命週期,在垃圾回收器掃描它所管轄的記憶體區域過程中,一旦發現了只具有弱引用的物件,就會回收它的記憶體,不過一般情況下,垃圾回收器的執行緒優先順序很低,也就不會很快發現那些只有弱引用的物件。
弱引用可以和一個引用佇列(ReferenceQueue)聯合使用,如果弱引用的物件被垃圾回收的話,Java虛擬機器就會把這個弱引用加入相關的引用佇列中。
一下就是建立弱引用物件的例子。
String abc1 = wf.get()//如果abcde這個物件沒有被垃圾回收器回收,那麼abc1就指向"abcde"物件
要理解弱引用,首先要先了解一下強引用(Strong Reference), 其實我之前也並不瞭解強引用,雖然天天都在用。舉例來說:
- String abc = new String ("abcdf");
弱引用就是不保證不被垃圾回收器回收的物件,它擁有比較短暫的生命週期,在垃圾回收器掃描它所管轄的記憶體區域過程中,一旦發現了只具有弱引用的物件,就會回收它的記憶體,不過一般情況下,垃圾回收器的執行緒優先順序很低,也就不會很快發現那些只有弱引用的物件。
弱引用可以和一個引用佇列(ReferenceQueue)聯合使用,如果弱引用的物件被垃圾回收的話,Java虛擬機器就會把這個弱引用加入相關的引用佇列中。
一下就是建立弱引用物件的例子。
- String abc =
- WeakReference<String> wf= new WeakReference<String>(str, rq);
String abc1 = wf.get()//如果abcde這個物件沒有被垃圾回收器回收,那麼abc1就指向"abcde"物件