问题标签 [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.

0 投票
4 回答
1958 浏览

.net - 需要帮助消除我的应用程序中的弱引用

我正在尝试解决我的应用程序中的内存泄漏问题。我已经下载并运行了 RedGate 的 ANTS Memory Profiler 5.0,内存分析器告诉我泄漏与 WeakReferences 有关。

我遇到的问题是我从未听说过 WeakReference,也没有在我的应用程序中明确声明它们。从我所做的阅读来看,我相信当你有一个试图被破坏但不能因为太多其他对象继续引用它的对象/资源时,会创建弱引用。我假设一个文件不能被删除,因为它仍在使用中。

所以我的问题是如何确定这些弱引用来自哪里?我怀疑这可能是使用 ByRef?另一位同事建议使用哈希表。

希望对弱参考检测和消除有所澄清,并对我的怀疑有所澄清。

谢谢。

0 投票
2 回答
2463 浏览

python - 为什么 Django 的信号处理默认使用弱引用进行回调?

Django 文档在这个问题上这样说:

另请注意,Django 默认将信号处理程序存储为弱引用,因此如果您的处理程序是本地函数,它可能会被垃圾回收。为防止这种情况,请在调用信号的 connect() 时传递 weak=False。

我无法找到任何理由说明为什么这是默认设置,而且我不明白为什么你会想要一个你明确注册的信号隐式消失。那么这里弱引用的用例是什么?为什么它是默认值?

我意识到在 99% 的情况下这两种方式都可能无关紧要,但显然这里有些东西我不明白,我想知道是否有任何潜伏的“陷阱”可能有一天会咬我。

0 投票
6 回答
2862 浏览

c# - C#:收集 WeakReference 之前的通知?

在 C#/.NET 中,有没有办法在弱引用指向的对象被破坏之前获得通知?基本上,我想允许一个对象被收集,但是在对象被销毁之前做一些事情,而不修改代码来添加析构函数(因为我不知道我的代码将使用什么类型的对象)。

谢谢,罗伯特

0 投票
3 回答
2878 浏览

python - Python 弱引用回调和 __del__ 执行顺序

在 Python 中,有没有办法在对象完成后调用函数?

我认为弱引用中的回调会做到这一点,但似乎一旦对象被垃圾收集,但在调用对象__del__方法之前,弱引用的回调就会被调用。这似乎与Python 主干中关于弱引用和垃圾收集的说明相反。这是一个例子。

我得到的输出是

有没有其他传统的方式来做我想做的事?我可以以某种方式强制我的回调完成吗?

0 投票
3 回答
4508 浏览

java - 在 Java 中使用弱引用的成本

有没有人研究过创建和垃圾收集 Java WeakReference对象所涉及的运行时成本?多线程应用程序是否存在任何性能问题(例如争用)?

编辑:显然,实际答案将取决于 JVM,但也欢迎一般观察。

编辑2:如果有人对性能进行了一些基准测试,或者可以指出一些基准测试结果,那将是理想的。(对不起,赏金已过期......)

0 投票
1 回答
1228 浏览

actionscript-3 - 对垃圾收集和 actionscript 3 中具有弱引用的事件感到困惑

我有一个对象的引用。这个对象有一个带有弱引用的定时器事件。例子:

现在我删除了这个引用(test 是包含引用的变量):

然而, timerHandler 一直被解雇。这是不可能的,所以我的代码中一定有某种错误,没有任何其他可能性吗?

或者这确实不应该阻止计时器功能一直运行?

0 投票
3 回答
857 浏览

python - 为什么弱代理并不总是在 python 中保持等价性?

MySQLDb 使用弱代理来防止游标和连接之间的循环依赖。

但是您会从关于 weakref 的文档中期望您仍然可以测试等效性。然而:

如何判断连接是否相同?

0 投票
4 回答
592 浏览

language-agnostic - 弱引用的其他用途?

我知道弱引用是记忆潜在大量数据的好选择,而维基百科关于弱引用的文章只列出了“跟踪应用程序中引用的当前变量”和“弱引用的另一种用法是书面的”一个缓存”。

还有哪些其他情况(比“缓存结果”更具体)使用弱引用是 A Good Idea TM

0 投票
3 回答
885 浏览

.net - WeakReference 是否适用于字符串?

在 .NET 3.5 中,WeakReference 是否与 String 一起使用,或者我应该将它包装在一个小“类”中以使其与它一起使用?

0 投票
1 回答
595 浏览

java - Java WeakHashMap 参考未更新

在下面的代码中,我创建了一个 Pen 对象并将其颜色初始化为白色。在 Pen 的构造函数中,在将字段“penColor”设置为传递给构造函数的值之后,我更新了一个全局静态弱哈希映射,我将其保存在 KEY 是“this 指针”的位置——在我的例子中是 Pen,并且value 是另一个weakhashmap,其KEY 是字符串“penColor”,其值是对penColor 成员字段的引用。

接下来,我的代码通过调用 Pen 的 setColor 函数来更新 Pen 的颜色。我原以为在这次更新之后,如果我在弱哈希图中查找 Pen 对象的颜色字段,它会反映新颜色,但事实并非如此。有人可以解释为什么会这样吗?