问题标签 [garbage-collection]

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 投票
6 回答
654 浏览

objective-c - 既然 Objective-C/Cocoa 有垃圾收集,我还需要学习管理内存吗?

所以我终于把我的 Objective-C/Cocoa 书掸掉了……原来它们已经快 7 岁了!Objective-C 2.0 现在有了垃圾收集,内存管理的章节有多重要?

垃圾收集有多大的不同?

0 投票
5 回答
1790 浏览

java - 关于 Java 垃圾收集器、空值和内存泄漏的问题

假设我在 java 中实现了一个队列,并且我有一个对初始节点的引用,称为 ini,另一个对最后一个节点,称为 last。现在,我开始将对象插入队列。在某一时刻,我决定我想要一个清除队列的操作。然后我这样做:

我在泄漏内存吗?我猜 ini 和 last 之间的节点仍然是链式的并且仍然有它们的数据,但同时还有垃圾收集器。

另一种方法是访问每个元素,然后将它们对下一个节点的引用设为空,但是我基本上会像在 C++ 中那样做,除了我不会显式使用删除。

0 投票
1 回答
513 浏览

vb.net - 收容树?

好的,我认为我理解 IDipose,但只是阅读了 Accelerated VB.NET 的最佳实践部分,它指出“该对象不包含任何实现 iDispose 的对象,因此您不需要遍历调用 iDispose 的包含树”

这个“收容树”是程序所知道的他已经使用然后破坏的东西,还是当我破坏一个对象时我应该查看一个包含类/集合?

0 投票
5 回答
3611 浏览

linux - 如何在多线程环境中实现垃圾回收?

我应该如何在由多个线程或进程组成的程序中执行垃圾收集?

如何从每个线程和进程中扫描堆栈?

每个进程都需要自己的垃圾收集例程吗?在与实际程序不同的线程/进程中运行垃圾收集器是个好主意吗?

0 投票
13 回答
5303 浏览

memory-management - 你什么时候不想使用垃圾收集?

垃圾收集从 LISP 的早期就已经存在,现在 - 几十年过去了 - 大多数现代编程语言都在使用它。

假设您正在使用其中一种语言,您有什么理由使用垃圾收集,而是以某种方式手动管理内存分配?

你曾经不得不这样做吗?

如果可能,请给出可靠的例子。

0 投票
7 回答
9376 浏览

java - Java 垃圾收集器如何处理自引用?

希望是一个简单的问题。以循环链表为例:

现在因为它是一个循环链表,当添加一个元素时,它在它的下一个变量中有一个对自身的引用。删除列表中的唯一元素时,条目设置为 null。是否需要将 ListContainer.next 设置为 null 以及垃圾收集器释放它的内存还是自动处理这种自引用?

0 投票
9 回答
156873 浏览

c++ - C++ 中的堆栈、静态和堆

我搜索过,但我对这三个概念不是很了解。我什么时候必须使用动态分配(在堆中),它的真正优势是什么?静态和堆栈的问题是什么?我可以编写整个应用程序而不在堆中分配变量吗?

我听说其他语言包含“垃圾收集器”,因此您不必担心内存。垃圾收集器是做什么的?

你能做些什么来自己操作内存,而使用这个垃圾收集器是做不到的?

曾经有人用这个宣言对我说:

我有一个“指向指针的指针”。这是什么意思?它是不同的:

?

0 投票
2 回答
393 浏览

java - 错误对话框未被破坏

我正在开发一个项目,该项目使用 JTable 来显示日期列等。我们需要验证用户输入的日期,所以我实现了格式验证的掩码和实际日期验证的解析的组合。我已经使用日期列的自定义 CellEditor 完成了此操作。

在我的 MaskedCellEditor 中,我有一个 JFormattedTextField。我为日期设置了掩蔽。然后我添加一个 InputVerifier 以允许实际验证。我的 InputVerifier 实现 verify() 来检查: 1. textField.isEditValid() 2. DateValidator.ValidDate()。如果任一无效,则验证返回 false 并且 InputVerifier 将焦点锁定在文本字段(单元格编辑器)中,并显示一个小消息对话框,提醒用户注意日期格式。

错误消息是一个小的、未修饰的、非模态的、不可聚焦的 JDialog,它会在正在编辑的单元格下方弹出。它会在按键或成功的日期验证时消失。除了一个小的边缘情况外,它工作得很好。

如果用户在弹出对话框时选择了应用程序顶部的菜单按钮,则会切换屏幕,破坏当前屏幕上的所有内容(包括表格)。但是,由于正在显示对话框并且没有发生按键/成功编辑,因此该对话框永远不会隐藏。它在不同屏幕上的完全不相关的上下文中仍然可见。一旦用户关闭了带有表格的屏幕,用户就无法摆脱对话框。

我曾讨论过在对话框本身上抛出 Timer 和/或 MouseListener 会导致它消失,但我觉得我忽略了实际问题。该对话框永远不会被丢弃,我很确定它是因为它仍然设置为可见并且它阻止垃圾收集器摆脱它。

我在持有 JTable 的面板上有一个 Cleanup 方法,但我找不到一个好方法来引用对话框(InputVerifier 的一个组件)以摆脱它。该对话框与表格的父面板相距甚远。(面板 -> JTable -> CellEditor -> JFormattedTextField -> InputVerifier -> JDialog)

关于如何在表格被销毁时强制隐藏对话框的任何想法?如果您需要更多详细信息,请告诉我。我试图不让你们陷入细节中,但还有很多事情要做。

0 投票
9 回答
1325 浏览

c# - 在我无法明确调用 Dispose() 的语句中间创建的 IDisposable 对象会发生什么?

假设我正在使用 Sharepoint(这也适用于其他对象模型),并且在我的陈述中间,我调用了一个方法,在本例中为“OpenWeb()”,它创建了一个 IDisposable SPWeb 对象。现在,我无法在 SPWeb 对象上调用 Dispose(),因为我没有对它的引用。 那么我需要担心这种泄漏的内存吗?

我知道我可以将语句分成多行并获取 SPWeb 引用来调用 Dispose:

请记住,我的问题不是关于美学,而是关于 IDisposable 对象发生了什么,我无法明确调用 Dispose(),因为我没有参考。

很抱歉我第一次问这个问题时不够清楚。从那以后我改写了它。感谢您迄今为止的所有回复。

0 投票
2 回答
863 浏览

.net - ValueType 包装器的垃圾收集

MSDN 链接中引用 ValueType 类

如果值类型必须表现得像对象,则在堆上分配一个使值类型看起来像引用对象的包装器,并将值类型的值复制到其中。包装器被标记以便系统知道它包含一个值类型。

这意味着当我编写像“integerVariable.ToString();”这样的代码时 创建的包装对象允许使用此方法以及 System.Object 的所有其他方法。

这种理解正确吗?

这些对象与“常规”对象有何不同?

此类对象的垃圾收集是否不同?如果是,如何?

提前致谢。