garbage-collection相关内容

带有匿名 EventListener 的 JPanel - 为什么 GC 不销毁侦听器?

我一直在阅读 JMapViewer 的开源代码.如果其他人希望查看它,请查看 SVN. 简而言之,主类是JMapViewer,它是JPanel的扩展.还有一个非常重要的类叫做DefaultMapController,它作为主类的MouseListener. 我注意到的第一件奇怪的事情是查看器没有对控制器的引用.JMapViewer 构造函数实例化 DefaultMapControlle ..
发布时间:2022-01-16 10:08:36 Java开发

Finalize() 期间的异常:您使用什么方法来检测垃圾收集器时异常?

我正在用 .NET 开发一个相当广泛的系统,其中涉及大量系统编程.大多数时候,我使用 IDisposable 模式来处理资源处理,但有时这不适用(或被错误地遗漏)并且资源在 Finalize() 期间被破坏.这可能发生在 COM 互操作中,或者当析构函数调用 Dispose() 并且其中存在异常时. 基本上:当终结器可能抛出时,并不总是能够清楚地看到和处理每个场景.当它发生时,应用程序肯定会 ..
发布时间:2022-01-16 10:08:30 C#/.NET

具有空队列的 PhantomReference

Java允许写: new PhantomReference(new Object(), null) 这种情况下new Object()会被收集吗? 据我了解,幻像引用是 finalize() 方法用法的替代方法. 在队列中出现引用后,我需要做一些额外的操作,然后运行 ​​clear() java 文档保留: 可以使用空队列创建幻像引用,但是这样的引用是完全没用的:它的 ..

G1 GC 是否有最大区域大小或最大区域数量?

我在学习 G1 GC 时,发现了这篇文章:http:///www.oracle.com/technetwork/articles/java/g1gc-1984535.html.在那篇文章中,有一段话是这样说的: G1 GC 是一个区域化和分代的垃圾收集器,这意味着 Java 对象堆(heap)被划分为多个大小相等的区域.启动时,Java 虚拟机 (JVM) 设置区域大小.区域大小可以从 1 ..
发布时间:2022-01-16 10:07:51 Java开发

Erlang 原子如何被垃圾回收

据说原子不会被垃圾收集.一旦你创建了一个 atom,它就会保留在 atom 表中,这最终可能会导致内存泄漏! 我是 Erlang 的新手,我的问题是:如何对原子进行垃圾收集?如果不可能,如何最小化这种影响? 解决方案 原子不是问题,除非您动态创建它们.如果你这样做了,那么你正在使 Erlang 系统崩溃. 如何动态创建原子?例如在循环中调用 list_to_atom 函数. ..
发布时间:2022-01-16 10:07:42 其他开发

垃圾回收:是否需要在 Dispose 方法中将大对象设置为 null?

在实现Dispose()方法时,是否需要将大对象设置为null? 解决方案 通常不会. 垃圾收集器查找有根对象,如果两个对象都没有根,循环依赖不会阻止收集. 有一个警告:如果对象 A 具有对对象 B 的引用,并且对象 B 正在被释放,您可能需要清理该关系,否则您可能会导致泄漏.这个表面最常见的地方是在事件处理程序中(来自 A->B 的引用是 B 控制的,因为它订阅了 A 上的事 ..
发布时间:2022-01-16 10:07:35 C#/.NET

何时收集垃圾

我有一段代码可以在内存中加载一个非常大的图像.因此,调用 似乎是合理的事情 System.gc(); 在加载图像之前.据我所知,它没有问题. 昨天我决定使用一个名为 FindBugs 的非常有用的软件来扫描您的代码并报告问题这可能会导致错误或通常不建议的策略.问题是我提到的这段代码被报告了.说明是这样的: ... 强制垃圾回收;非常可疑,除了在基准测试代码 它继续详细说明: ..
发布时间:2022-01-16 10:07:02 Java开发

垃圾收集何时在 C# 中触发?

我读了很多关于垃圾收集的东西,比如它的生成、范围等,但想知道垃圾收集什么时候被触发?如果可能的话,一个例子会很有帮助. 谢谢, 解决方案 当下列条件之一为真时发生垃圾回收: 系统物理内存不足. 托管堆上分配的对象使用的内存超过了可接受的阈值.随着流程的运行,此阈值会不断调整. 调用 GC.Collect 方法.在几乎所有情况下,您都不必调用此方法,因为垃圾收集器会持续运行. ..
发布时间:2022-01-16 10:06:55 C#/.NET

垃圾收集器是否会在 .NET 中的异步调用期间销毁临时未引用的对象?

想象一下,我将在 .NET 中进行异步调用,即 HttpWebRequest.BeginGetResponse,并且 HttpWebRequest 对象没有在更广泛的范围内被引用.垃圾收集器会破坏它并引起问题吗? 示例代码: 使用系统;使用 System.Net;公共类 AsyncHttpWebRequest{无效的主要(){var Request = HttpWebRequest.Cre ..
发布时间:2022-01-16 10:06:48 C#/.NET

Ruby 中的对象销毁通知

我编写了一个自定义 Rails 模型.这个模型是由一个实际的服务器而不是一个数据库表支持的(所以它不是从 ActiveRecord::Base 继承的).为了从服务器获取请求的信息,我打开了一个到它的 SSH 连接.因为 rails 不重用对象,所以会为收到的请求创建一个新对象以及与服务器的新 SSH 连接.为了减少服务器压力,我想在模型对象被垃圾收集之前关闭 SSH 连接.我想知道 ruby​​ ..
发布时间:2022-01-16 10:06:41 其他开发

C++ 有垃圾收集器吗?

我目前正在阅读一份未发表的硕士论文报告,我将提供反馈. 在报告中,他们提到了原生 C++ 和托管 C++ 下的 GC.我以为 C++ 没有任何标准的 GC,我是对还是错?(他们没有提到 Boehm-Demers-Weiser.) 他们在某些条件下无法正常工作.它们在一个线程中创建对象,并从另一个线程中删除指针. 解决方案 Native C++ 默认没有这样的东西(最接近这个的是 ..
发布时间:2022-01-16 10:06:34 C/C++开发

GC 多久执行一次?

Java:在 JVM 中执行 GC 的频率是多少?每一秒?每一分钟?还是随机取决于内存大小?我只是想有个主意. 谢谢. 解决方案 这取决于内存使用情况和存储对象的堆.看看这个 http://javarevisited.blogspot.com/2011/04/garbage-collection-in-java.html 它不依赖于时间.它仅取决于新的内存要求和可用内存. ..
发布时间:2022-01-16 10:06:28 Java开发

正在收集回调代表?

一直在使用 FMOD 进行 C# 游戏开发,但我很早就遇到了一个似乎无法解决的问题.我想做一些分支音频的东西并将一些游戏动作同步到节拍等,所以我尝试将同步点添加到我的音乐曲目中.代码如下: 公开课音乐{私人声音音乐;私人频道频道;私有 IntPtr 同步指针;公共字符串文件{获取;私人套装;}公共音乐(字符串文件){文件=文件;}公共无效负载(){音乐=新声音();Audio.System.cr ..
发布时间:2022-01-16 10:06:18 C#/.NET

compaction发生后GC如何更新引用

.NET 垃圾收集器收集对象(回收它们的内存)并执行内存压缩(将内存碎片保持在最低限度). 我想知道,由于应用程序可能对对象有很多引用,当对象的地址由于 GC 进行压缩而发生变化时,GC(或 CLR)如何管理对对象的这些引用. 解决方案 这个概念很简单,垃圾收集器简单地更新任何对象引用并将它们重新指向移动的对象. 实现有点棘手,本机代码和托管代码之间没有真正的区别,它们都是机器 ..
发布时间:2022-01-16 10:06:10 C#/.NET

使用 NIO 直接缓冲区时设置 -XX:+DisableExplicitGC 的影响

我们正在构建一个具有激进性能 SLA 的 Web 应用程序,由于 System.gc() 调用导致 JVM 出去吃午饭,这些 SLA 会定期被违反.我们进行了一些调试,并确定在所有情况下,调用 System.gc() 的都是内部应用服务器代码.这在应用服务器启动或应用程序部署时会发生几次,我们并不关心.但是,System.gc() 也会在应用启动并通过内部应用服务器调用 NIO 类运行时定期触发. ..
发布时间:2022-01-16 10:05:54 Java开发

托管托管代码和垃圾收集

我有一个 C++ 进程外 COM 服务器,它承载大量 C# 代码以支持 C++ COM 对象公开的 API. 出于多种原因,我正在考虑取消我的解决方案中的 C++ 部分.但是,由于我无法控制的限制,我必须保留进程外 COM 服务器.Microsoft 确实在这里提供了一个典型示例. 看这个例子有一些我不明白的地方.在消息循环开始之前,会创建一个计时器以每 5 秒调用一次 GC.Coll ..
发布时间:2022-01-16 10:05:45 C#/.NET