问题标签 [circular-reference]
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.
javascript - jQuery.data 会导致内存泄漏吗?
以下代码是否会造成内存泄漏。
根据 jQuery 文档,使用该data
函数可以避免内存泄漏。确认以下内容是否安全将很有用。
javascript - 设置 this.constructor = this 会导致循环引用/内存泄漏
以下代码有效,但我是否有导致循环引用或内存泄漏的风险?
jquery - 将传递对您正在使用 .bind 的对象的引用会导致循环引用
我有一个 jQuery 对象,我正在使用.bind()
方法将事件分配给该对象。但是,我还将对对象本身的引用传递给 bind 方法,如下所示:
我想知道这是否会“事实上”导致循环引用?
python - 使用循环引用处理对象
我的设计如下:
__main__
参考a
a
参考b
b
参考a
a
被创建然后从__main__
因此a
并b
具有循环引用。但是,del a
我宁愿两者兼而有之a
,然后将其b
处理掉。
我在很多地方看到使用上下文管理器的建议,特别是with
语句而不是__del__()
. 但是,我在本地范围内看到的所有with
开始和结束示例(例如,某种方法)
这可以优雅地执行with
吗?
什么是替代方案?
c# - 两个 interface 的实例可以互相引用吗?
使用 C#
代码工作正常并且不会导致循环引用问题吗?
javascript - Javascript / 垃圾收集器中的循环引用
有人可以详细解释 Javascript 引擎如何处理循环引用吗?浏览器甚至 node.js 之间有很大区别吗?
我所说的是对象内的显式后退/下一个引用。例如:
我们去吧。如果我们这样做,console.log( objA )
我们可以看到我们创建了一个无限链。最大的问题是,这很糟糕吗?未明确清理时是否会造成内存泄漏?
所以我们必须
或者垃圾收集器会在这样的星座上照顾我们吗?
python - 处理来自 sys.exc_info() 的回溯对象时的适当注意和安全
我知道sys.exc_info文档说在处理回溯对象时要小心,但仍然不确定某些情况的安全性或不安全性。此外,文档说“警告:不要这样做!”,紧接着是“注意:实际上,没关系”,这进一步让我感到困惑。
在任何情况下,文档和“为什么需要在 Python 中显式删除 sys.exc_info() 回溯? ”(Alex Martelli 的回答)似乎暗示其唯一的局部变量引用分配给它们的回溯值导致一个问题。
这给我留下了几个问题:
- 在这种情况下,“局部变量”究竟是什么意思?我正在为术语而苦苦挣扎,但是:这是否意味着仅在函数中创建的变量,还是由函数参数创建的变量?范围内的其他变量呢,例如全局变量或自我?
- 闭包如何影响回溯的潜在循环引用?一般的想法是:闭包可以引用其封闭函数可以引用的所有内容,因此引用闭包的回溯最终可能会引用相当多的内容。我正在努力想出一个更具体的例子,但是一些组合:一个内部函数,返回 sys.exc_info() 的代码,在某个范围内的昂贵的短期对象。
随意告诉我我的结论或假设在哪里是错误的,因为在我写这篇文章时,我已经多次说服自己相信和不相信自己的陈述:)。
虽然我想要我的具体示例的答案,但我也在寻求关于如何在更深奥的情况下安全处理回溯的一般建议、知识或战争故事(例如,您必须运行一个循环并希望积累任何引发的异常,您必须生成一个新线程并需要报告其引发的任何异常,您必须创建闭包和回调,并且必须与引发的异常进行通信等)。
示例 1:执行错误处理的内部函数
闭包是否Handled()
会导致任何引发的异常引用error_queue
并导致循环引用,因为error_queue
还包含回溯?从error_queue
(即调用.get()
)中删除回溯是否足以消除循环引用?
示例 2:exc_info 范围内的长寿对象,或返回 exc_info
引发的异常是否AlphaSub()
具有对 的引用expensive_object
,并且因为expensive_object
被缓存,所以回溯永远不会消失?如果是这样,如何打破这样的循环?
或者,exc_info
包含Alpha
堆栈帧,Alpha
堆栈帧包含对 的引用exc_info
,从而产生循环引用。如果是这样,如何打破这样的循环?
objective-c - 这是循环引用吗?
我有一个继承自CCSprite
被调用的类GameObject
。我还有一个ActionDispatcher
继承自NSObject
.
工作是在被询问时ActionDispatcher sharedActionDispatcher's
返回 a CCActionInterval
,并且执行此操作的方法需要对询问对象的引用,该对象是类型GameObject
(或其子类)。但是为了GameObject
能够要求这个,它需要参考ActionDispatcher
。所以我在标题中有一个#import "GameObject.h"
,在ActionDispatcher
标题#import "ActionDispatcher"
中有一个GameObject
。
我收到一个错误:Expected ')' before 'GameObject'
在ActionManager
引用 a 的方法中GameObject
。
编辑:添加评论以显示我根据下面接受的答案修复此问题的位置。
javascript - 如何使用循环引用保存对象?
我想在本地保存一个具有循环引用的对象。我有哪些选择?
我的第一个想法是使用 HTML5 本地存储,但由于循环引用,我无法对这个对象进行字符串化。
具体来说,我正在尝试保存当前选择的 DOMSelection 对象。
例子:
我现在可以让 stringify 工作的唯一方法是忽略某些对象,如下所示:
但这给我留下了一个相当空的 DOMSelection 对象,这不足以满足我的需要。
有没有其他方法可以保存这个对象?唯一的要求是它在移动 safari 中运行,其他任何东西都可以。解决方案可以是 javascript 或 jquery(或任何其他 js lib,如果需要)。
感谢您的任何帮助,您可以提供。
dependency-injection - 如果仅注入直接依赖项,如何防止 Google Guice 中的循环引用
Google Guice 的最佳实践是仅注入直接依赖项。但是,如果我使用以下示例代码,如何在Customer类中创建帐户实例?
问题是,Guice 总是尝试通过调用providePurchasingAccount()来获取新帐户,这会导致循环引用。