weak-references

    2熱度

    1回答

    的文檔WeakReference<T>對線程安全的共同樣板: 任何公共靜態此類型的成員(在Visual Basic中的Shared)都是線程安全的。 任何實例成員不保證是線程安全的。 但是,我想知道是否確實安全的使用WeakReference < T>的實例成員? 特別,我想知道是否是安全的,讓這樣的東西的併發訪問: class MyRef<T> where T : class { p

    0熱度

    1回答

    我使用StringBuilder的完成它得到的O/P爲{abc=value-bb, abc=value-cc, abc=value-aa, abc=value-abc} ,但想知道是否可以通過使用弱引用

    1熱度

    1回答

    說我有兩個WeakReference實例,我想看看他們是否指向同一個對象。你能想象兩種場景,一個地方都引用指向同一個對象: SomeClass a = 1; var wr1 = new WeakReference(a); var wr2 = new WeakReference(a); 和一個他們哪裏都不: SomeClass a = 1; SomeClass b = 1; var wr

    6熱度

    1回答

    我需要一個按鍵鎖定機制來保護關鍵部分的關鍵部分。 雖然ConcurrentMap<K, Semaphore>足以實現併發,但我也不希望地圖累積舊密鑰並無限增長。 理想情況下,數據結構將最終(或緊隨其後)釋放用於未使用鎖的密鑰的內存。 我有種想番石榴的Cache建有weakValues()會做的伎倆: private static final LoadingCache<K, Semaphore> K

    1熱度

    1回答

    我想知道這是否是良好的做法,當使用弱引用是一個好主意/不好主意... 創建適配器時,我傳遞它(所以它可以使用調用的接口回調片段「EmailOrdersButton」)弱引用片段: WeakReference<OrderHistoryListFragment> weakFragment = new WeakReference<OrderHistoryListFragment>(OrderHistor

    6熱度

    1回答

    雖然根據第"Performance"讀取Xamarin文檔,我注意到的以下章節: 下圖說明可與強引用會出現一個問題: 對象A對對象B有強烈的引用,而對象B對對象A有強烈的引用。這種對象被稱爲不朽對象由於存在cir強烈的參考。這種父子關係並不罕見,因此即使對象不再被應用程序使用,垃圾收集器也無法收回對象。 這是我第一次聽說C#/ .NET/Mono上下文中的「不朽的對象」。 頁面隨後繼續建議在其中一

    2熱度

    1回答

    在.NET中,有一個名爲ConditionalWeakTable的類。這是一個地圖/字典,它可以對垃圾收集的對象生命週期和資格進行一些保證。 它擁有對鍵的弱引用,並且如果它們不能從表之外的任何位置到達,它們將自動刪除鍵(所以鍵不是通過作爲表的成員來保存的,也不會在可以從任何位置即使有循環引用之類的其他類似的不可訪問的鍵或值)。 該值仍然保持在表中,但如果由於無法訪問密鑰而被刪除,它們將被刪除。 該

    0熱度

    1回答

    我認爲下面第二個例子的結果應該是「null」,但是在我運行代碼之後,我發現例1中的輸出是「Strong-String」,例2中它是「null」 我真的不明白這是爲什麼。 例子: // property definition @property (nonatomic, strong) NSString *strongStr; @property (nonatomic, weak) NSStrin

    2熱度

    1回答

    __weakref__與弱引用有關。我得到了弱引用背後的全部想法,以及我可能在哪裏使用它們。我不明白的是在下面描述的唯一的事: 一個實例沒有屬性__weakref__本身,從類不同,因此實例繼承__weakref__從類,這意味着A.__weakref__應該是一樣A().__weakref__: >>> class A: pass ... >>> A().__dict__ # Each

    2熱度

    2回答

    HashMap<StringBuilder, StringBuilder> aMap = new HashMap<StringBuilder, StringBuilder>(); StringBuilder emp = new StringBuilder("Stack"); StringBuilder val = new StringBuilder("Programmer");