garbage-collection相关内容

当 .NET 不在垃圾收集 (GC) 中间时如何捕获 .NET 进程的进程内存转储

在捕获转储文件并对其进行分析时(例如在WinDbg中),我经常收到警告说数据可能不准确,或者命令可能无法访问,因为转储文件时进程正在GC中间被收集了. 在做内存分析时,我们经常这样做是因为进程上的内存很高,内存压力很大,我猜这迫使.NET经常进行GC. 如何避免在 GC 期间进行转储?有没有办法知道何时可以安全地捕获转储文件? 解决方案 我不是这方面的专家,但我注意到您可以使用 ..
发布时间:2022-01-16 10:05:27 C#/.NET

MVVM light Messenger 中的动作、局部变量和垃圾收集的奇怪行为

我在 MVVM Light 中的 Messenger 系统遇到了一个非常奇怪的问题.这很难解释,所以这里有一个演示这个问题的小程序: 使用系统;使用 GalaSoft.MvvmLight.Messaging;命名空间 TestApp{课堂节目{静态无效主要(字符串 [] 参数){var prog = 新程序();var接收者=新对象();prog.RegisterMessageA(收件人);pr ..
发布时间:2022-01-16 10:05:19 C#/.NET

如何在不先进行垃圾收集的情况下在 Java 5 上进行堆转储?

我们有一个运行 Java 5 的长期运行的服务器应用程序,对其进行分析我们可以看到老一代随着时间的推移缓慢增长.它在完整的 GC 上被正确释放,但我希望能够使用堆转储查看 Eclipse MAT 中无法访问的对象.我已经使用 +XX:HeapDumpOnCtrlBreak 成功获得了堆转储,但是 JVM 总是在转储堆之前进行 GC.显然这不会发生在 Java 6 上,但我们现在停留在 5 上.有什 ..
发布时间:2022-01-16 10:05:12 Java开发

为什么JVM消耗的内存比-Xms指定的少?

我的问题如题,通过搜索了解了一些知识: linux 有共享内存如何测量一个应用程序的实际内存使用情况申请或流程? JVM会保留Xms中设置的内存量-Xms JVM 是什么意思堆内存? 但还是不知道为什么,有的可以帮忙吗? 这是我在 Ubuntu12.04(64bit) 上运行的测试 |JDK 1.7.0_04.顶部显示如下: PID USER PR NI VIRT RE ..
发布时间:2022-01-16 10:05:05 Java开发

在 .NET 中,当您最小化程序时会调用垃圾收集器,这是真的吗?

我用 C# 创建了一个程序.该程序使用了我大约 60-70MB 的内存.但是当我最小化那个程序时,它需要更少的内存,即只有 10 MB. 当我最大化或回到那个程序时,它使用了 20 MB... 为什么会这样? 当您最小化程序时是否会调用垃圾收集器? 解决方案 本文一一讲解:记忆之谜 这是来自上述网站的摘录: .Net Urban Legend 可以减少 ..
发布时间:2022-01-16 10:04:39 C#/.NET

在 Go 中哪些对象是默认完成的,它有哪些陷阱?

函数runtime.SetFinalizer(x, f interface{}) 将与 x 关联的终结器设置为 f. 什么类型的对象默认被终结? 默认完成这些对象会导致哪些意外陷阱? 解决方案 默认完成以下对象: os.File:文件对象被垃圾回收时自动关闭. os.Process:最终确定将释放与进程相关的任何资源.在 Unix 上,这是一个无操作.在 Windo ..
发布时间:2022-01-16 10:04:28 其他开发

静态成员的垃圾收集

静态成员会被垃圾收集器收集吗? 解决方案 静态变量引用的对象只有在相关的AppDomain被垃圾回收时才会被垃圾回收.在客户端应用程序中,通常只有一个 AppDomain 在整个过程中存在.(例外情况是应用程序使用插件架构 - 不同的插件可能会加载到不同的 AppDomain 中,而 AppDomain 可能会在以后卸载.) 在 ASP.NET 中,“AppDomain 回收"会定期 ..
发布时间:2022-01-16 10:04:14 C#/.NET

任务和垃圾收集存在哪些问题?

在使用派生自任务并行库的 API 和类时,开发人员何时需要关注垃圾回收的影响? .NET 任务实例能否超出范围在运行期间?,似乎会给您一种安全感,您不必担心将任务保持在范围内.但是,问题似乎仅限于在 ThreadPool 上运行的任务,然后它们由 ThreadPool root.但是,如果我理解 这篇 MSDN 博文正确地,来自该 SO 问题的建议并不普遍适用,因为来自 TaskComple ..
发布时间:2022-01-16 10:04:07 C#/.NET

如何确保始终调用 finalize()(Java 练习中的思考)

我正在慢慢研究 Bruce Eckel 的 Thinking in Java 第 4 版,以下问题让我很困惑: 使用 finalize( ) 方法创建一个打印消息的类.在 main( ) 中,创建你的类的一个对象.修改前面的练习,以便始终调用您的 finalize(). 这是我写的代码: 公共类马{布尔不稳定;马(布尔输入){不稳定=在;}公共无效最终确定(){if (!inStab ..
发布时间:2022-01-16 10:03:50 Java开发

如何查看 java 正在使用哪个垃圾收集器

Java 虚拟机支持多种垃圾收集策略. 这篇文章解释了它们. 现在我想知道我的应用程序正在使用哪种(自动选择的)策略,有没有办法让 JVM(1.6 版)打印这些信息? 编辑:JVM 检测它是处于客户端模式还是服务器模式.所以问题真的是我如何才能看到哪些已经被检测到? 解决方案 http://java.sun.com/j2se/1.5.0/docs/guide/vm/gc- ..
发布时间:2022-01-16 10:03:44 Java开发

我是否需要在对象被孤立之前从对象中删除事件订阅?

如果我的软件有两个对象实例,其中一个订阅了另一个的事件.我是否需要在它们成为孤儿之前相互取消订阅,以便垃圾收集器清理它们?或者还有什么其他原因我应该清除事件关系?如果订阅的对象是孤立的,但订阅者不是,反之亦然? 解决方案 是的.事件发布者持有对对象的引用,并且会阻止它们被垃圾回收. 让我们看一个例子来看看会发生什么.我们有两个班级;一个暴露事件,另一个消耗它: 类 ClassA{公 ..
发布时间:2022-01-16 10:03:37 C#/.NET

CMS 垃圾收集器 - 它何时运行?

我对可能控制 CMS 收集器何时启动的两个参数感到困惑: MaxHeapFreeRatio(默认为 70%) CMSInitiatingOccupancyFraction(默认超过 90%) 这些参数的具体含义是什么?收集器什么时候开始(标记阶段),收集(清扫阶段)? 解决方案 CMSInitiatingOccupancyFraction 决定 CMS 何时启动(为了使此 ..
发布时间:2022-01-16 10:03:23 Java开发

C# - 超出范围时对象是否立即销毁?

我可以相信一个对象在 C# 中超出范围时会被销毁并立即调用其析构函数吗? 我认为应该这样做,因为许多常见的编码实践(例如事务对象)都依赖于这种行为,但我不太习惯使用垃圾收集,并且对这些语言通常的行为方式知之甚少. 谢谢. 解决方案 不,.Net 因此 C# 依赖于垃圾回收内存管理.因此,在 GC 发现可以销毁对象之前,不会调用析构函数(在 .Net 中称为终结器). 另外 ..
发布时间:2022-01-16 10:03:14 C#/.NET

C++/CLI 中重复的析构函数调用和跟踪句柄

我正在使用 C++/CLI,使用 MSDN 文档和 ECMA 标准 和 Visual C++ Express 2010.让我印象深刻的是以下与 C++ 的不同: 对于 ref 类,必须编写终结器和析构器,以便它们可以在尚未完全构造的对象上多次执行. 我编造了一个小例子: #include 参考结构 Foo{Foo() { std::wcout ..
发布时间:2022-01-16 10:03:03 C/C++开发

是否可以在 C# 中创建一个真正的弱键字典?

我正在尝试为 C# 编写一个真正的 WeakKeyedDictionary 的详细信息...但我遇到了困难. 我意识到这是一项不平凡的任务,但似乎无法声明 WeakKeyedKeyValuePair (其中 GC 仅在键可访问时遵循值引用)使它看起来不可能. 我看到了两个主要问题: 到目前为止,我看到的每个实现都不会在收集键后修剪值.想想看 - 使用这样一个 Diction ..
发布时间:2022-01-16 10:02:36 C#/.NET

当 Java 线程设置为 null 时会发生什么?

线程启动后,如果线程的引用设置为null,线程会发生什么?它会停止吗?是否符合 GC 条件? 像这样: t.start();t = 空; 解决方案 实时线程将继续运行,即使它的引用设置为空. 就像任何其他对象一样,当没有对它的引用时,它就有资格进行 GC.棘手的一点是,正在运行的线程在 ThreadGroup 中有一个引用,即使您的程序没有保留一个引用,因此 正在运行的线程永远不会被 ..
发布时间:2022-01-16 10:02:29 Java开发

nodejs 减少 v8 垃圾收集器的内存使用量

我正在使用 util 模块和 heapUsed 值保持在 30-100MB 左右,heapTotal 值增长到 1.4GB. 这是一个关于类似行为的问题 我了解到这是 v8 垃圾收集器的行为方式,但问题是如果在 512 MB 设备上运行,如何减少它分配的内存量(使其小于 1.4GB) 解决方案 您需要控制最大内存大小标志(所有大小均以 MB 为单位). 建议的“内存不足" ..
发布时间:2022-01-16 10:02:05 其他开发