问题标签 [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.
java - System.gc() 什么时候做某事?
我知道垃圾收集在 Java 中是自动化的。但我明白,如果你调用System.gc()
你的代码,JVM 可能会或可能不会决定在那个时候执行垃圾收集。这如何精确地工作?JVM 在看到 GC 时究竟决定执行(或不执行)GC 的依据/参数是什么System.gc()
?
是否有任何示例在这种情况下将其放入您的代码中是个好主意?
c++ - C++ 中的垃圾收集库
哪些免费和商业垃圾收集库可用于 C++,它们各自的优缺点是什么?
我感兴趣的是从该领域的实际使用中来之不易的经验教训,而不是营销或促销宣传。
无需详细说明与自动垃圾收集相关的通常权衡,但请务必提及使用的算法(引用计数、标记和清除、增量等)并简要总结后果。
.net - 是什么阻止了 C# 中的线程被收集?
在 .NET 中,在这段代码之后,什么机制可以阻止Thread
对象被垃圾收集?
是的,假设某些东西对线程有引用是安全的,我只是在徘徊到底是什么。出于某种原因,Reflector 没有显示给我System.Threading
,所以我自己无法挖掘它(我知道 MS 发布了 .NET 框架的源代码,我只是手边没有它)。
c# - 如何避免实时 .NET 应用程序中的垃圾收集?
我正在编写一个金融 C# 应用程序,它从网络接收消息,根据消息类型将它们转换为不同的对象,最后在它们上应用应用程序业务逻辑。
关键是在应用了业务逻辑之后,我很确定我再也不需要这个实例了。我不想等待垃圾收集器释放它们,而是明确地“删除”它们。
在 C# 中是否有更好的方法可以做到这一点,我应该使用对象池来重用相同的实例集还是有更好的策略。
目标是避免垃圾收集在时间关键的过程中使用任何 CPU。
java - Java VM 是否在内存中移动对象,如果是,如何移动?
Java 虚拟机是否曾经移动内存中的对象,如果是,它如何处理对移动对象的更新引用?
我问是因为我正在探索以分布式方式(即跨多个服务器)存储对象的想法,但出于效率原因,我需要能够在服务器之间移动对象。对象需要能够包含指向彼此的指针,甚至指向远程服务器上的对象。我正在尝试考虑更新对移动对象的引用的最佳方法。
到目前为止,我的两个想法是:
- 在对象的生命周期内保持一个不会移动的引用间接,如果对象移动,我们会更新它。但是 - 这些间接是如何管理的?
- 为每个对象保留一个反向引用列表,这样我们就知道如果对象被移动,必须更新什么。当然,这会产生性能开销。
我会对有关这些方法的反馈以及对替代方法的任何建议感兴趣。
garbage-collection - 如何在没有 gc 的情况下实现闭包?
我正在设计一种语言。首先,我想决定生成什么代码。该语言将具有类似于 javascript 的词法闭包和基于原型的继承。但我不是 gc 的粉丝,并尽量避免。那么问题来了:有没有一种优雅的方式来实现闭包,而无需在堆上分配堆栈帧并将其留给垃圾收集器?
我的第一个想法:
- 使用引用计数和垃圾收集周期(我不太喜欢这个)
- 使用意大利面条堆栈(看起来非常低效)
- 将闭包的形成限制在某些上下文中,这样我就可以摆脱返回地址堆栈和本地堆栈。
我不会使用高级语言或遵循任何调用约定,所以我可以随心所欲地粉碎堆栈。
(编辑:我知道引用计数是垃圾收集的一种形式,但我在其更常见的含义中使用 gc)
.net - 从外部触发 .NET 垃圾回收
有没有办法从另一个进程或 WinDBG 内部触发 .NET 进程中的垃圾收集?
当您跨过本机/托管边界时,有托管调试助手会强制收集,并且AQTime似乎有按钮建议它这样做,但我找不到任何有关如何执行此操作的文档。
java - 哪个循环的性能更好?为什么?
或者
我再也不需要在循环外使用's'了。第一个选项可能更好,因为每次都不会初始化新的字符串。然而,第二个将导致变量的范围仅限于循环本身。
编辑:回应 Milhous 的回答。将字符串分配给循环内的常量是没有意义的,不是吗?不,这里的“一些分配”是指从被迭代的列表中获得的变化值。
另外,问题不是因为我担心内存管理。只是想知道哪个更好。
java - VMWare 服务器上的 Java 垃圾收集
在 VmWare 实例上运行应用程序时,是否有人遇到过 Java 默认垃圾收集器的问题?
我遇到的问题是完整的垃圾收集没有像我预期的那样经常运行,并且很好奇 VmWare 变量是否与它有关。
c# - 必须在 C# 中手动清理的资源?
在C#中必须手动清理哪些资源,不这样做的后果是什么?
例如,假设我有以下代码:
如果我不使用 dispose 方法清理画笔,我假设垃圾收集器会释放程序终止时使用的内存?它是否正确?
我还需要手动清理哪些其他资源?