问题标签 [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 投票
16 回答
153076 浏览

java - System.gc() 什么时候做某事?

我知道垃圾收集在 Java 中是自动化的。但我明白,如果你调用System.gc()你的代码,JVM 可能会或可能不会决定在那个时候执行垃圾收集。这如何精确地工作?JVM 在看到 GC 时究竟决定执行(或不执行)GC 的依据/参数是什么System.gc()

是否有任何示例在这种情况下将其放入您的代码中是个好主意?

0 投票
9 回答
24797 浏览

c++ - C++ 中的垃圾收集库

哪些免费和商业垃圾收集库可用于 C++,它们各自的优缺点是什么?

我感兴趣的是从该领域的实际使用中来之不易的经验教训,而不是营销或促销宣传。

无需详细说明与自动垃圾收集相关的通常权衡,但请务必提及使用的算法(引用计数、标记和清除、增量等)并简要总结后果。

0 投票
6 回答
5187 浏览

.net - 是什么阻止了 C# 中的线程被收集?

在 .NET 中,在这段代码之后,什么机制可以阻止Thread对象被垃圾收集?

是的,假设某些东西对线程有引用是安全的,我只是在徘徊到底是什么。出于某种原因,Reflector 没有显示给我System.Threading,所以我自己无法挖掘它(我知道 MS 发布了 .NET 框架的源代码,我只是手边没有它)。

0 投票
13 回答
26682 浏览

c# - 如何避免实时 .NET 应用程序中的垃圾收集?

我正在编写一个金融 C# 应用程序,它从网络接收消息,根据消息类型将它们转换为不同的对象,最后在它们上应用应用程序业务逻辑。

关键是在应用了业务逻辑之后,我很确定我再也不需要这个实例了。我不想等待垃圾收集器释放它们,而是明确地“删除”它们。

在 C# 中是否有更好的方法可以做到这一点,我应该使用对象池来重用相同的实例集还是有更好的策略。

目标是避免垃圾收集在时间关键的过程中使用任何 CPU。

0 投票
6 回答
3076 浏览

java - Java VM 是否在内存中移动对象,如果是,如何移动?

Java 虚拟机是否曾经移动内存中的对象,如果是,它如何处理对移动对象的更新引用?

我问是因为我正在探索以分布式方式(即跨多个服务器)存储对象的想法,但出于效率原因,我需要能够在服务器之间移动对象。对象需要能够包含指向彼此的指针,甚至指向远程服务器上的对象。我正在尝试考虑更新对移动对象的引用的最佳方法。

到目前为止,我的两个想法是:

  1. 在对象的生命周期内保持一个不会移动的引用间接,如果对象移动,我们会更新它。但是 - 这些间接是如何管理的?
  2. 为每个对象保留一个反向引用列表,这样我们就知道如果对象被移动,必须更新什么。当然,这会产生性能开销。

我会对有关这些方法的反馈以及对替代方法的任何建议感兴趣。

0 投票
13 回答
3534 浏览

garbage-collection - 如何在没有 gc 的情况下实现闭包?

我正在设计一种语言。首先,我想决定生成什么代码。该语言将具有类似于 javascript 的词法闭包和基于原型的继承。但我不是 gc 的粉丝,并尽量避免。那么问题来了:有没有一种优雅的方式来实现闭包,而无需在堆上分配堆栈帧并将其留给垃圾收集器?

我的第一个想法:

  1. 使用引用计数和垃圾收集周期(我不太喜欢这个)
  2. 使用意大利面条堆栈(看起来非常低效)
  3. 将闭包的形成限制在某些上下文中,这样我就可以摆脱返回地址堆栈和本地堆栈。

我不会使用高级语言或遵循任何调用约定,所以我可以随心所欲地粉碎堆栈。

(编辑:我知道引用计数是垃圾收集的一种形式,但我在其更常见的含义中使用 gc)

0 投票
4 回答
9467 浏览

.net - 从外部触发 .NET 垃圾回收

有没有办法从另一个进程或 WinDBG 内部触发 .NET 进程中的垃圾收集?

当您跨过本机/托管边界时,有托管调试助手会强制收集,并且AQTime似乎有按钮建议它这样做,但我找不到任何有关如何执行此操作的文档。

0 投票
8 回答
8709 浏览

java - 哪个循环的性能更好?为什么?

或者

我再也不需要在循环外使用's'了。第一个选项可能更好,因为每次都不会初始化新的字符串。然而,第二个将导致变量的范围仅限于循环本身。

编辑:回应 Milhous 的回答。将字符串分配给循环内的常量是没有意义的,不是吗?不,这里的“一些分配”是指从被迭代的列表中获得的变化值。

另外,问题不是因为我担心内存管理。只是想知道哪个更好。

0 投票
3 回答
1608 浏览

java - VMWare 服务器上的 Java 垃圾收集

在 VmWare 实例上运行应用程序时,是否有人遇到过 Java 默认垃圾收集器的问题?

我遇到的问题是完整的垃圾收集没有像我预期的那样经常运行,并且很好奇 VmWare 变量是否与它有关。

0 投票
14 回答
2146 浏览

c# - 必须在 C# 中手动清理的资源?

在C#中必须手动清理哪些资源,不这样做的后果是什么?

例如,假设我有以下代码:

如果我不使用 dispose 方法清理画笔,我假设垃圾收集器会释放程序终止时使用的内存?它是否正确?

我还需要手动清理哪些其他资源?