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");