问题标签 [weak-references]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
android - Android:GC 不尊重 SoftReferences?
它表明 Dalvik 的垃圾收集器不尊重 SoftReferences 并尽快删除它们,就像 WeakReferences 一样。我还不是 100% 确定,但尽管仍有大约 3MB 的可用内存,但在我在 LogCat 中看到“GC 释放 bla-bla-bla 字节”后,我的 SoftReferences 被清除了。
另外,我在这里看到了 Mark Murphy 的评论:
除了它不能在 Android 上运行,至少在 1.5 时间范围内。我不知道 GC SoftReference 错误是否已修复。SoftReferences 很快就会因为这个错误而被 GC。
这是真的吗?是否不尊重软引用?
如何解决这个问题?
java - 为什么存在WeakHashMap,却没有WeakSet?
来自J. Bloch
一个......内存泄漏的来源是监听器......确保回调被及时垃圾收集的最佳方法是只存储对它们的弱引用,例如,将它们仅作为键存储在 WeakHashMap中。
那么,为什么 Java Collections 框架中没有 WeakSet呢?
java - 如何降低 GC 期间的弱 ref 处理时间?
目前我面临的问题是我的应用程序偶尔会显示较长的 GC 时间,但所有这些都只是由弱引用处理引起的。所以线程停止时间总是接近weak ref处理时间。所有其他 GC 周期为 0.0001 秒到 0.200 秒。
从 gc.log (重新格式化):
目前我有这些设置。尝试了更简单的设置,但没有改变。
如果我打开 NewSize,我最终会得到很长的正常 GC 周期。该机器有 8 个核心,不会为应用程序消耗那么多 CPU。试图尽早并同时运行老一代 GC。
是的,我无法摆脱弱引用的使用,因为这是第 3 方库的一部分。
ruby - Ruby 中 WeakRef 的成本是多少?
我想知道使用WeakRef处理大型数据集的开销是多少?
我要执行的任务是这样的:
假设这get_array_of_weak_refs
不耗时且具有O(1)
复杂性。所以唯一关心的是huge
数组的内存大小。
我现在也不关心计算result
.
如果它huge
是一个普通数组,那么它当然可能不适合内存。
但是,如果将 WeakRef 用作该数组的元素会有所帮助吗?因此,在我们迭代了一个元素之后x
,它可以被垃圾收集以释放一些内存。
这种情况的开销是多少?有什么选择吗?
android - 用于在活动之间传递数据的 WeakReferences 的 HashMap
我对官方 android FAQ中的以下建议特别感兴趣。
对象弱引用的 HashMap
您还可以使用弱引用的 HashMap 到具有长键的对象。当一个 Activity 想要将一个对象传递给另一个 Activity 时,它只需将该对象放入映射中并通过 Intent Extras 将密钥(这是一个基于计数器或时间戳的唯一 Long)发送给接收者 Activity。接收者活动使用此键检索对象。`
我还没有找到如何正确实现这一点的方法。而且我不确定为什么这里首选 WeakReferences 以及为什么不使用硬引用。
我的实现(我想将XY 类的实例从活动 A发送到服务 B):
接收服务具有对象的静态 HashMap。
/li>发送部分的代码(活动 A)
/li>接收方代码(服务 B)
/li>
该代码使用硬引用。为什么我应该在这里使用弱引用(如常见问题解答所建议的那样)?这种用于传递数据的使用模式是否可以,或者您是否更喜欢其他东西。
scala - WeakReference 和 Scala REPL
我想玩scala.ref.WeakReference。但是,在尝试实现大事之前,我想尝试检查 scala 控制台中的行为。我尝试了一些事情,但我无法获得要取消引用的对象。这是我的尝试之一:
下面的 oxbow_lakes 给出了另一种尝试。
我还尝试徒劳地显式运行垃圾收集器(调用java.lang.System.gc
)。
有没有办法取消引用的内容res1
?
matlab - MATLAB 弱引用处理类对象
在考虑 MATLAB 中基于句柄类的 ORM 的可能性时,缓存实例的问题出现了。我无法立即想到一种方法来制作弱引用或弱映射,尽管我猜测事件监听器可能会设计一些东西。有任何想法吗?
更多信息
在 MATLAB 中,句柄类(与值类相反)具有引用语义。MATLAB 中包含的一个示例是containers.Map
该类。如果您实例化一个并将其传递给函数,则该函数对对象所做的任何修改都将通过原始引用可见。也就是说,它像 Java 或 Python 对象引用一样工作。
与 Java 和 Python 一样,MATLAB 以一种或另一种方式跟踪有多少事物正在引用句柄类的每个对象。当不再有对象时,MATLAB 知道删除该对象是安全的。
弱引用是指引用对象但不计为垃圾收集目的的引用。因此,如果对对象的唯一剩余引用很弱,则可以将其丢弃。通常可以向弱引用提供事件或回调 - 当对象被丢弃时,将通知对它的弱引用,从而允许运行清理代码。
例如,弱值映射类似于法线映射,不同之处在于值(与键相对)是作为弱引用实现的。弱映射类可以在每个弱引用上安排回调或事件,以便在删除引用的对象时,删除映射中的键/值条目,保持映射整洁。
perl - 在 Perl 中,为什么复制弱引用会创建正常的强引用?
注意:复制弱引用会创建一个正常的强引用。
我不明白为什么 Perl 会这样处理它。在我的应用程序中,我习惯于
weaken
打破循环。有时,如果 Perl 不这样做,我必须削弱已经很弱的引用。
c# - 检查在 .NET 3.5 中对给定实例持有多少引用
是否可以检查 .NET 3.5 中给定实例的引用数量?
data-structures - 纯功能等效于弱哈希图?
像Java 的弱哈希映射这样的弱哈希表使用弱引用来跟踪垃圾收集器对无法访问的键的集合,并从集合中删除与该键的绑定。弱哈希表通常用于实现从图中的一个顶点或边到另一个的间接寻址,因为它们允许垃圾收集器收集图的不可达部分。
这种数据结构是否存在纯粹的功能等价物?如果没有,如何创建一个?
这似乎是一个有趣的挑战。内部实现不可能是纯粹的,因为它必须收集(即变异)数据结构以删除无法访问的部分,但我相信它可以为用户提供一个纯粹的界面,用户永远无法观察到杂质,因为它们只影响数据的一部分根据定义,用户无法再访问的结构。