強弱軟虛,引用

2021-09-19 03:38:00 字數 865 閱讀 4383

就是正常的物件定義及引用,分配

object object=new object();
軟引用呢,記憶體空間足夠就不**,不夠就**

public static void soft() throws exception{

object obj = new object();

referencequeue rq = new referencequeue<>();

softreference sr = new softreference(obj, rq); //建立關於obj的軟引用,使用引用佇列

system.out.println(sr.get()); //get方法會輸出這個obj物件的hashcode

system.out.println(rq.poll()); //輸出為null

obj = null;

system.gc();

thread.sleep(200); //因為finalizer執行緒優先順序很低,所以讓執行緒等待200ms

system.out.println(sr.get()); //因為堆空間沒滿,可有可無的特性,所以還是會輸出這個obj物件的hashcode

system.out.println(rq.poll()); //自然隊列為null

弱引用呢,就是記憶體夠不夠,都要被**,只要gc就**

虛引用必須和引用佇列一起使用

就是幽靈引用,當**的時候,會先標記,把虛引用加入到引用佇列中。真正**的時候會看是否需要**,判斷標準斷是:佇列中是否加入虛引用來判斷被引用的物件是否將要gc**,從而可以在finalize方法中採取措施。

java 軟引用 弱引用 虛引用

軟引用 用softreference類來標記,被軟引用標記的物件,只有在記憶體不足的時候,gc才會 該物件。弱引用 用weakreference類來標記,被弱引用標記的物件,在gc時,無論記憶體是否充足,都會被 掉。虛引用 用phantomreference來標記,虛引用需要有乙個與之關聯的引用佇列...

iOS 強弱引用

時間 2015 05 02 14 10 00 精華區 原文主題 ios開發 強引用和弱引用 我們已經知道oc中的記憶體管理是通過 引用計數器 來實現的。乙個物件的生命週期取決於它是否還被其他物件引用 是否retaincount 0 但在有些情況下,我們並不希望物件的銷毀時間由是否被其他物件引用來決定...

強引用,軟引用,弱引用,虛引用

強引用就是我們通常意義上的引用,類似 object object new object 只要強引用在,就不會被gc。軟引用,這種物件就是拿來jvm拿來防止記憶體溢位的乙個措施,當jvm要進行記憶體洩露的時候就會把這種物件進行 如果記憶體還不夠,才會丟擲outofmemoryerror。softref...