garbage-collection相关内容

c#终结器抛出异常?

引用自 MSDN: 如果 Finalize 或 Finalize 的覆盖引发异常,则运行时会忽略该异常,终止该 Finalize 方法,并继续终结过程. 如果我有: ~Person(){抛出新异常(“meh");} 那么它会导致运行时异常吗? 附言我知道这永远不会发生,但是我只是对这种行为感到好奇.我们的一个客户在他们所有的终结器周围都有一个空的 try catch.它甚至没 ..
发布时间:2022-01-16 10:26:48 C#/.NET

在 C# 中销毁结构对象?

我有点困惑,在 C# 中只有引用类型会被垃圾收集.这意味着 GC 只选择引用类型进行内存释放.那么值类型也会占用堆栈内存呢? 解决方案 首先,它们是在堆栈上还是堆的一部分取决于它们所属的上下文 - 如果它们在引用中类型,无论如何它们都会在堆上.(无论如何,您应该考虑您真正关心堆栈/堆划分的程度 - 正如 Eric Lippert 所写,它是 主要是实现细节.) 然而,基本上值类型的内 ..
发布时间:2022-01-16 10:26:41 C#/.NET

android 2.3 中的垃圾收集器

从 Google 小组中,我了解到 android 2.3 正在使用并发垃圾收集器.从源代码中我可以看到它同时使用了复制收集器以及标记和扫描,我的问题是并发是在标记和扫描GC还是在复制GC中实现的.请尽快帮助我 解决方案 默认情况下,并发意味着仅并发标记和清除垃圾收集器.所以在 android 2.3 中并发标记和清除用于堆栈相关对象,将所有内容视为指针,复制垃圾收集用于堆中的对象. ..
发布时间:2022-01-16 10:26:21 移动开发

C# WeakReference 对象在终结器中为 NULL,但仍被强引用

您好,我这里有代码,但我不明白为什么会遇到断点(请参阅评论). 这是我不知道或我不正确理解的 Microsoft 错误吗? 代码在 Debug 中经过测试,但我认为它不应该改变任何东西. 注意:您可以直接在控制台应用程序中测试代码. 仅供参考...在 supercat 回答之后,我用建议的解决方案修复了我的代码,它运行良好:-) !!!坏事是静态字典的使用以及随之而来的性能 ..
发布时间:2022-01-16 10:26:13 C#/.NET

调用 intern() 方法后,内存中的 new String() 对象何时被清除

列表list = new ArrayList();for (int i = 0; i 上例中,调用string.intern()方法后,堆(sb.toString)中创建的1000个对象什么时候会被清空? 编辑 1:如果不能保证这些对象可以被清除.假设 GC 没有运行,使用 string.intern() 本身是否已经过时?(就内存使用而言?) 在使用 intern() 方法时,有 ..

包含实现 IDisposable 的项目的会话

在 ASP.NET 中,如果项目留在会话状态中,实现 IDisposable 但在会话到期时从未被应用程序专门删除和处置,将对 Dipose() 中的任何代码将执行的对象调用 Dispose? 解决方案 如果 IDisposable 模式是 正确实现,然后是的(即类的析构函数将负责处理对象).我不相信 ASP.NET 会话管理器对在实现 IDisposable 的类上显式调用 Dispos ..
发布时间:2022-01-16 10:25:51 C#/.NET

在 Go 中,变量何时会变得不可访问?

Go 1.7 beta 1 今天早上发布,这里是 Go 1.7 的发行说明草稿.一个新函数 KeepAlive 被添加到包 runtime 中.runtime.KeepAlive的文档给出了一个例子: type 文件结构 { d int }d, err := syscall.Open("/file/path", syscall.O_RDONLY, 0)//... 如果 err != nil .. ..
发布时间:2022-01-16 10:25:44 其他开发

“java.lang.OutOfMemoryError:GC 开销限制超出"中的 Excessive GC Time 的持续时间

有时,在每 2 天一次到每 2 周一次之间,我的应用程序在代码中看似随机的位置崩溃:java.lang.OutOfMemoryError: GC 开销限制超出.如果我用谷歌搜索这个错误,我会来到 这个 SO 问题 并导致我 这段 sun 文档 解释了: 如果时间过长,并行收集器将抛出 OutOfMemoryError用于垃圾收集:如果超过 98% 的总时间是花费在垃圾收集上,只有不到 2% ..
发布时间:2022-01-16 10:25:31 Java开发

FreeOSMemory() 在生产中

我在有 tcp 服务器的包中使用 goroutine.大多数时候响应很重,但是当例程结束时,它并没有从内存中清除. func Handle() {服务:=“:7777"tcpAddr, err := net.ResolveTCPAddr("tcp4", service)检查错误(错误)侦听器,错误:= net.ListenTCP("tcp", tcpAddr)检查错误(错误)延迟监听器.关闭() ..
发布时间:2022-01-16 10:25:21 其他开发

用于确定 JVM 何时将陷入内存/GC 问题的有用指标

我有一个 Scala 数据处理应用程序,它 95% 的时间可以处理内存中抛出的数据.剩下的 5% 如果不加以检查,通常不会遇到 OutOfMemoryError,而只是进入一个主要的 GC 循环,这会使 CPU 达到峰值,阻止后台线程执行,如果它完成了,则需要 10 倍-50x 只要它有足够的内存. 我已经实现了可以将数据刷新到磁盘并将磁盘流视为内存中迭代器的系统.它通常比内存慢一个数量级, ..
发布时间:2022-01-16 10:25:11 Java开发

如何在 C# 的 Dispose() 方法中处理托管资源?

我知道 Dispose() 是为非托管资源设计的,当不再需要该资源时应该将其释放,而无需等待垃圾收集器完成对象. 但是,在处理对象时,它会抑制垃圾收集器的终结(GC.SuppressFinalize(this); 在下面的代码中).这意味着如果对象包含托管资源,我们也必须注意这一点,因为垃圾收集器不会清理它. 在下面的示例代码中(来自 MSDN),“组件"是一个托管资源,我们为此资源调 ..
发布时间:2022-01-16 10:25:04 C#/.NET

-XX:+UseG1GC 是 -Xincgc 的正确替代品吗?

目前,我们通过在 java 命令中添加 -Xincgc 来使用增量垃圾收集器.在 JDK 8 中,此开关已弃用.那么它的等效替代品是什么?-XX:+UseG1GC? 背景:该应用程序有一个 8GB 的堆,并创建了许多短生命周期的对象.我注意到它经常暂停几秒钟来进行垃圾收集.出于好奇,我添加了 -Xincgc,发现停顿消失了,整体性能提高了约 4 倍. 不幸的是,我没有找到任何关于 -X ..
发布时间:2022-01-16 10:24:54 Java开发

.net 系统范围内的垃圾收集器还是应用程序范围内的垃圾收集器?

在与我的同事讨论期间,我怀疑 .net 中的垃圾收集器是否适用于系统范围或应用程序范围. 意味着如果每个应用程序都有自己的 GC,那么它会影响系统性能吗? 我对此有点困惑. 解决方案 每个进程都有自己的托管堆,会单独收集. 没有系统范围的堆,所以不可能有系统范围的 GC. (如果您在同一个进程中运行多个 CLR,它们每个都有自己的 GC.不过这种情况非常罕见.) ..
发布时间:2022-01-16 10:24:47 C#/.NET

如何销毁 THREEJS 场景?

我创建了一个 Threejs 场景,添加了相机、灯光和各种对象. 问题很简单:如何破坏场景?从场景中移除所有组件? 我需要销毁场景,因为我确实不想将任务委托给垃圾收集器. 解决方案 我用这个: cancelAnimationFrame(this.id);//停止动画this.renderer.domElement.addEventListener('dblclick', n ..
发布时间:2022-01-16 10:24:36 前端开发

带有 TB RAM 的 go 1.5 gc 有多快?

Java 无法使用 TB 的 RAM,因为 GC 暂停时间太长(几分钟).随着最近对 Go GC 的更新,我想知道它的 GC 暂停是否足够短,可以用于大量 RAM,例如几 TB. 目前有这方面的基准吗?我们现在可以使用具有这么多 RAM 的垃圾收集语言吗? 解决方案 tl;dr: 目前,您无法在单个 Go 进程中使用 TB 的 RAM.Linux 上的最大容量为 512 GB, ..
发布时间:2022-01-16 10:24:19 其他开发

ExecutorService 超出范围时是否会被垃圾收集?

我问这个问题是因为我正在创建很多执行程序服务,虽然我可能已经在某个需要调查的地方存在内存泄漏,但我认为最近对以下代码的更改实际上使情况恶化了,因此我试图确认发生了什么: @FunctionalInterface公共接口 BaseConsumer 扩展了 Consumer;{@覆盖默认无效接受(最终路径路径){字符串名称 = path.getFileName().toString();Execut ..

python中的引用循环是什么?

我查看了 python 的官方文档,但我似乎找不到参考循环是什么.任何人都可以澄清它对我来说是什么,因为我正在尝试理解 GC 模块.提前感谢您的回复. 解决方案 引用循环仅仅意味着一个或多个对象相互引用,这样如果你在纸上用箭头表示依赖关系,你会看到一个循环. (几乎)最简单的引用循环是有两个对象 a 和 b 相互引用: a.other = bb.some_attr = a 天真的 ..