strong and weak 強引用和弱引用的區別
(weak和strong)不同的是 當一個物件不再有strong型別的指標指向它的時候 它會被釋放 ,即使還有weak型指標指向它。
一旦最後一個strong型指標離去 ,這個物件將被釋放,所有剩餘的weak型指標都將被清除。
可能有個例子形容是妥當的。
想象我們的物件是一條狗,狗想要跑掉(被釋放)。
strong型指標就像是栓住的狗。只要你用牽繩掛住狗,狗就不會跑掉。如果有5個人牽著一條狗(5個strong型指標指向1個物件),除非5個牽繩都脫落 ,否著狗是不會跑掉的。
weak型指標就像是一個小孩指著狗喊到:“看!一隻狗在那” 只要狗一直被栓著,小孩就能看到狗,(weak指標)會一直指向它。只要狗的牽繩脫落,狗就會跑掉,不管有多少小孩在看著它。
只要最後一個strong型指標不再指向物件,那麼物件就會被釋放,同時所有的weak型指標都將會被清除。
strong就相當於retain屬性,而weak相當於assign。只有一種情況你需要使用weak(預設是strong),就是為了避免retain cycles(就是父類中含有子類{父類retain了子類},子類中又呼叫了父類{子類又retain了父類},這樣都無法release)
相關推薦
strong and weak 強引用和弱引用的區別
(weak和strong)不同的是 當一個物件不再有strong型別的指標指向它的時候 它會被釋放 ,即使還有weak型指標指向它。 一旦最後一個strong型指標離去 ,這個物件將被釋放,所有剩餘的weak型指標都將被清除。 可能有個例子形容是妥當的。 想象我們的物件是一條狗,狗想要跑掉(被釋放)。 s
Java中的強引用和弱引用
style 關系 term handle ren soft obj jsb false 旭日Follow_24 的CSDN 博客 ,全文地址請點擊: https://blog.csdn.net/xuri24/article/details/81114944 一、強引用
強引用和弱引用
強引用是指向記憶體申請一段儲存空間,進行儲存的引用型別的物件的引用,如下建立一個強引用, object obj = new object();obj = 10; 在物件獲得的分配記憶體空間中不僅僅存放了物件的資訊,還存放著該物件被引用的次數。在建立一個強引用時,預設的引用次數為 1,之後每引用一
Java之"強引用、軟引用 和弱引用"
思考:Java中為何會有引用的概念? 思路:在Java裡,當一個物件M被建立的時候,它就被放在heap裡。當GC執行時,如果發現沒有任何引用指向物件M,M就會被回收,用以騰出記憶體空間。 總結:如果一個物件被回收,需要滿足兩個條件: 沒有任何引用指向它 觸發GC(
強引用和弱引用(__strong和__weak)
初學者乾貨 在OC ARC模式下開發: id objcA =[ [NSObject alloc] init]; 預設宣告的一個物件就為__strong強引用,等價於: id __strong objcA =[ [NSObject alloc] init]; 注:在強引用
python3學習筆記之 強引用和弱引用
python中,名字和物件的關聯是強引用的關係,會增加引用計數,進而影響目標物件的生命週期。所以 弱引用就是在保留引用的前提下,不增加計數,不阻止目標被回收。但不是所有的型別都支援弱引用(如 int、str、list、tuple。。。等)這裡要提到解構函式 __del__當物
硬引用和軟引用區別 強引用和弱引用區別
1.強引用 本章前文介紹的引用實際上都是強引用,這是使用最普遍的引用。如果一個物件具有強引用,那就類似於必不可少的生活用品,垃圾回收器絕不會回收它。 當記憶體空 間不足,Java虛擬機器寧願丟擲OutOfMemoryError錯誤,使程式異常終止,也不會靠隨意回收具有強引用的物件來解決記憶體
java軟引用和弱引用
/** * 引用處理 * * @作者 light-zhang * @時間 2018年11月9日 * @product mall-utils * @package cc.zeelan.common.retus * @file CatReference.java * */ public
Android開發優化方案之軟引用和弱引用的使用
物件的引用分為四種級別,為了能更加靈活的控制物件的生命週期。這四種級別由高到低依次為:強引用、軟引用、弱引用和虛引用。 本篇主要介紹軟引用和弱引用的使用和區別 一、軟引用:SoftReference 如果一個物件只具有軟引用,那麼如果記憶體空間足夠,垃圾回收器就不會回收它;如
java中的軟引用和弱引用
在java 中除了基本資料型別之外,其他都是引用資料型別,而引用資料型別又分類四種 強引用 指向通過new得到的記憶體空間的引用叫做強引用,比如 String a = new String(“123”),其中的a就是一個強引用,它指向了一塊記憶體為123的堆空間。平時我們
Android面試篇之軟引用和弱引用的區別
軟引用所指向的物件要進行回收,需要滿足兩個條件: ● 沒有任何強引用 指向 軟引用指向的物件(記憶體中的Person物件) ● JVM需要記憶體時,即在丟擲OOM之前 即SoftReference變相
軟引用和弱引用在安卓開發中的使用
用處一:解決Handler可能造成的記憶體洩露。 原因分析:為什麼Handler可能造成記憶體洩露。 當使用內部類(包括匿名類)來建立Handler的時候,Handler物件會隱式地持有一個外部類物件(通常是一個Activity)的引用,不然你怎麼可能通過Handler來操
Android 軟引用和弱引用的使用分析
本文目錄 1. 引用型別 Java 語言的引用型別有這幾種 強引用 軟引用 SoftReference 弱引用 WeakReference 強引用只要有被引用,虛擬機器 gc 的時候是不會清理的,我們平時寫的程式碼沒有特別指明什麼引用累心,都
[Android] Android開發優化之——使用軟引用和弱引用
Java從JDK1.2版本開始,就把物件的引用分為四種級別,從而使程式能更加靈活的控制物件的生命週期。這四種級別由高到低依次為:強引用、軟引用、弱引用和虛引用。這裡重點介紹一下軟引用和弱引用。如果一個物件只具有軟引用,那麼如果記憶體空間足夠,垃圾回收器就不會回收它;如果記憶體
重新理解strong與weak(強引用,弱引用),以及strong和copy的區別
- (void)test: { NSMutableString *mStr = [NSMutableStringstringWithFormat:@"hello"]; self.sStr = mStr; self.cStr = mStr; NSLog
Java基礎篇 - 強引用、弱引用、軟引用和虛引用
splay 查看 tla 之前 for 應用 幹貨 程序 策略 前言 Java執行GC判斷對象是否存活有兩種方式其中一種是引用計數。 引用計數:Java堆中每一個對象都有一個引用計數屬性,引用每新增1次計數加1,引用每釋放1次計數減1。 在JDK 1.2以前的版本中,若
Java中的引用型別(強引用、弱引用)和垃圾回收
Java中的引用型別和垃圾回收 強引用Strong References 強引用是最常見的引用: 比如: StringBuffer buffer = new StringBuffer(); 建立了一個StringBuffer類的物件,並用一個變數buffer儲存對這個
Java中的強引用、軟引用、弱引用和虛引用及其例項
在《深入理解Java虛擬機器(第二版)》3.2.3節:再談引用 中,介紹了Java中的幾種引用: 在JDK 1.2以前,Java中的引用的定義很傳統:如果reference型別的資料中儲存的數值代表的是另外一塊記憶體的起始地址,就稱這塊記憶體代表著一
Java中的強引用,軟引用,弱引用和虛引用
從JDK1.2版本開始,把物件的引用分為四種級別,從而使程式能更加靈活的控制物件的生命週期。這四種級別由高到低依次為:強引用、軟引用、弱引用和虛引用。 一、強引用 如果一個物件具有強引用,那就類似於必不可少的生活用品,垃圾回收器絕不會回收它。當記憶體空 間不足,Java虛
Java 的引用型別有哪幾種:強引用、軟引用、弱引用和虛引用
Java雖然有記憶體管理機制,但仍應該警惕記憶體洩露的問題。例如物件池、快取中的過期物件都有可能引發記憶體洩露的問題。 從JDK1.2版本開始,加入了物件的幾種引用級別,從而使程式能夠更好的控制物件的生命週期,幫助開發者能夠更好的緩解和處理記憶體洩露的問題。 這幾種