C 中的弱引用

2022-02-15 12:49:44 字數 948 閱讀 6371

了解弱引用之前,先了解一下什麼是強引用

例如 : object obj=new object();     就是乙個強引用,記憶體分配乙份空間給用以儲存object資料,這塊記憶體有乙個首位址,也就是obj所儲存的資料,記憶體分配的空間中不僅僅儲存著object物件資訊,還儲存著自己(object本身)被引用的次數。

當乙個物件被強引用的形式建立的時候,本身被引用的次數已經為1.

接著object o=obj; 這句**執行之後,obj指向的object的儲存空間已經被引用了2次,所以object儲存的被引用數值為2.

總結:強引用最終導致的結果就是被引用的物件的被引用次數+1;

相反的弱引用就是不會對被引用物件的被引用次數有任何影響。

防止記憶體洩露。

object obj=new object();

當你在通過非同步的形式訪問網路上面的資源的時候,需要的時間可能會比較長,在資料返回之前,使用者很可能轉向了其他的頁面,如果非同步訪問的物件(obj)對本地的乙個物件(object)是強引用的話,那麼在這個非同步訪問物件(obj)被釋放之前,也即在資料被**之前,這個被引用的物件(object)是不會被銷毀的,這樣一來,就導致記憶體一直被占用。

weakreference weakobj=new weakreference(object);

此時就可以使用弱引用,弱引用物件(weakobj)發出非同步請求,在**之前,如果使用者要轉到其他的頁面,這個被引用的物件(object)是可以被釋放的,這樣子就不會出現記憶體一直被占用的現象。

弱引用類: weakreference //有兩個過載的建構函式

weakreference weakobj=new weakreference(object);//弱引用方式

isalive屬性是判斷此弱引用物件所引用的物件是否還存在,存在:isalive=true;

target屬性是設定該弱引用物件所引用的資料物件的值

標籤: 弱引用

C 中的弱引用

了解弱引用之前,先了解一下什麼是強引用 例如 object obj new object 就是乙個強引用,記憶體分配乙份空間給用以儲存object資料,這塊記憶體有乙個首位址,也就是obj所儲存的資料,記憶體分配的空間中不僅僅儲存著object物件資訊,還儲存著自己 object本身 被引用的次數。...

C 中的弱引用(WeakReference)

else 只要顯示的將弱引用的target屬性附值就會得到弱引用所代表物件的乙個強引用。不過在使用物件之前要對其可用性進行檢查,因為它可能已經被 了。如 果你得到的是null vb.net下為nothing 表明物件已經被 不能再用了,需要重新分配乙個。如果不是null,就可以放心大膽的用 了。接下...

WeakHashMap 中的弱引用

相信很多人對weakhashmap並沒有完全理解。weakhashmap 持有的弱引用的 key。1.弱引用的概念 弱引用是用來描述非必需物件的,被弱引用關聯的物件只能生存到下一次垃圾收集發生之前,當垃圾收集器工作時,無論當前記憶體是否足夠,都會 掉只被弱引用關聯的物件。2.weakhashmap中...