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

0 投票
4 回答
1711 浏览

javascript - jQuery.data 会导致内存泄漏吗?

以下代码是否会造成内存泄漏。

根据 jQuery 文档,使用该data函数可以避免内存泄漏。确认以下内容是否安全将很有用。

0 投票
2 回答
161 浏览

javascript - 设置 this.constructor = this 会导致循环引用/内存泄漏

以下代码有效,但我是否有导致循环引用或内存泄漏的风险?

0 投票
1 回答
117 浏览

jquery - 将传递对您正在使用 .bind 的对象的引用会导致循环引用

我有一个 jQuery 对象,我正在使用.bind()方法将事件分配给该对象。但是,我还将对对象本身的引用传递给 bind 方法,如下所示:

我想知道这是否会“事实上”导致循环引用?

0 投票
3 回答
244 浏览

python - 使用循环引用处理对象

我的设计如下:

  • __main__参考a
  • a参考b
  • b参考a
  • a被创建然后从__main__

因此ab具有循环引用。但是,del a我宁愿两者兼而有之a,然后将其b处理掉。

我在很多地方看到使用上下文管理器的建议,特别是with语句而不是__del__(). 但是,我在本地范围内看到的所有with开始和结束示例(例如,某种方法)

这可以优雅地执行with吗?
什么是替代方案?

0 投票
1 回答
91 浏览

c# - 两个 interface 的实例可以互相引用吗?

使用 C#

代码工作正常并且不会导致循环引用问题吗?

0 投票
1 回答
11906 浏览

javascript - Javascript / 垃圾收集器中的循环引用

有人可以详细解释 Javascript 引擎如何处理循环引用吗?浏览器甚至 node.js 之间有很大区别吗?

我所说的是对象内的显式后退/下一个引用。例如:

我们去吧。如果我们这样做,console.log( objA )我们可以看到我们创建了一个无限链。最大的问题是,这很糟糕吗?未明确清理时是否会造成内存泄漏?

所以我们必须

或者垃圾收集器会在这样的星座上照顾我们吗?

0 投票
1 回答
1590 浏览

python - 处理来自 sys.exc_info() 的回溯对象时的适当注意和安全

我知道sys.exc_info文档说在处理回溯对象时要小心,但仍然不确定某些情况的安全性或不安全性。此外,文档说“警告:不要这样做!”,紧接着是“注意:实际上,没关系”,这进一步让我感到困惑。

在任何情况下,文档和“为什么需要在 Python 中显式删除 sys.exc_info() 回溯? ”(Alex Martelli 的回答)似乎暗示其唯一的局部变量引用分配给它们的回溯值导致一个问题。

这给我留下了几个问题:

  1. 在这种情况下,“局部变量”究竟是什么意思?我正在为术语而苦苦挣扎,但是:这是否意味着仅在函数中创建的变量,还是由函数参数创建的变量?范围内的其他变量呢,例如全局变量或自我?
  2. 闭包如何影响回溯的潜在循环引用?一般的想法是:闭包可以引用其封闭函数可以引用的所有内容,因此引用闭包的回溯最终可能会引用相当多的内容。我正在努力想出一个更具体的例子,但是一些组合:一个内部函数,返回 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,从而产生循环引用。如果是这样,如何打破这样的循环?

0 投票
3 回答
362 浏览

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

编辑:添加评论以显示我根据下面接受的答案修复此问题的位置。





0 投票
2 回答
7477 浏览

javascript - 如何使用循环引用保存对象?

我想在本地保存一个具有循环引用的对象。我有哪些选择?

我的第一个想法是使用 HTML5 本地存储,但由于循环引用,我无法对这个对象进行字符串化。

具体来说,我正在尝试保存当前选择的 DOMSelection 对象。

例子:

我现在可以让 stringify 工作的唯一方法是忽略某些对象,如下所示:

但这给我留下了一个相当空的 DOMSelection 对象,这不足以满足我的需要。

有没有其他方法可以保存这个对象?唯一的要求是它在移动 safari 中运行,其他任何东西都可以。解决方案可以是 javascript 或 jquery(或任何其他 js lib,如果需要)。

感谢您的任何帮助,您可以提供。

0 投票
1 回答
588 浏览

dependency-injection - 如果仅注入直接依赖项,如何防止 Google Guice 中的循环引用

Google Guice 的最佳实践是仅注入直接依赖项。但是,如果我使用以下示例代码,如何在Customer类中创建帐户实例?

问题是,Guice 总是尝试通过调用providePurchasingAccount()来获取新帐户,这会导致循环引用。