garbage-collection相关内容
在 Java 堆上,我预计年轻一代的大小将是eden空间和两个幸存者空间(从空间和到空间): [young gen size] = [eden space size] + [from space size] + [to space size] 但是,GC 日志(使用 XX:+PrintHeapAtGC)表明 young generation 的大小是 eden 空间大小的总和 并且只有幸存者空
..
我一直在阅读 JMapViewer 的开源代码.如果其他人希望查看它,请查看 SVN. 简而言之,主类是JMapViewer,它是JPanel的扩展.还有一个非常重要的类叫做DefaultMapController,它作为主类的MouseListener. 我注意到的第一件奇怪的事情是查看器没有对控制器的引用.JMapViewer 构造函数实例化 DefaultMapControlle
..
我正在用 .NET 开发一个相当广泛的系统,其中涉及大量系统编程.大多数时候,我使用 IDisposable 模式来处理资源处理,但有时这不适用(或被错误地遗漏)并且资源在 Finalize() 期间被破坏.这可能发生在 COM 互操作中,或者当析构函数调用 Dispose() 并且其中存在异常时. 基本上:当终结器可能抛出时,并不总是能够清楚地看到和处理每个场景.当它发生时,应用程序肯定会
..
Java允许写: new PhantomReference(new Object(), null) 这种情况下new Object()会被收集吗? 据我了解,幻像引用是 finalize() 方法用法的替代方法. 在队列中出现引用后,我需要做一些额外的操作,然后运行 clear() java 文档保留: 可以使用空队列创建幻像引用,但是这样的引用是完全没用的:它的
..
我需要我的 Oracle Hotspot 比使用 UseGCOverheadLimit 的默认参数更快地抛出异常 java.lang.OutOfMemoryError: GC 开销限制. 默认情况下,OOME 发生在 98% 以上的时间用于 GC 且堆回收不到 2% 时(描述 http://www.oracle.com/technetwork/java/javase/gc-tuning-6-
..
我在学习 G1 GC 时,发现了这篇文章:http:///www.oracle.com/technetwork/articles/java/g1gc-1984535.html.在那篇文章中,有一段话是这样说的: G1 GC 是一个区域化和分代的垃圾收集器,这意味着 Java 对象堆(heap)被划分为多个大小相等的区域.启动时,Java 虚拟机 (JVM) 设置区域大小.区域大小可以从 1
..
据说原子不会被垃圾收集.一旦你创建了一个 atom,它就会保留在 atom 表中,这最终可能会导致内存泄漏! 我是 Erlang 的新手,我的问题是:如何对原子进行垃圾收集?如果不可能,如何最小化这种影响? 解决方案 原子不是问题,除非您动态创建它们.如果你这样做了,那么你正在使 Erlang 系统崩溃. 如何动态创建原子?例如在循环中调用 list_to_atom 函数.
..
在实现Dispose()方法时,是否需要将大对象设置为null? 解决方案 通常不会. 垃圾收集器查找有根对象,如果两个对象都没有根,循环依赖不会阻止收集. 有一个警告:如果对象 A 具有对对象 B 的引用,并且对象 B 正在被释放,您可能需要清理该关系,否则您可能会导致泄漏.这个表面最常见的地方是在事件处理程序中(来自 A->B 的引用是 B 控制的,因为它订阅了 A 上的事
..
字符串池是否驻留在堆上?如果是,字符串字面量是否符合垃圾回收条件? 当使用 new String("abc") 时,我们知道它在堆上创建了一个对象,并将字符串字面量放入字符串池中.所以我的第二个问题是:
..
我有一段代码可以在内存中加载一个非常大的图像.因此,调用 似乎是合理的事情 System.gc(); 在加载图像之前.据我所知,它没有问题. 昨天我决定使用一个名为 FindBugs 的非常有用的软件来扫描您的代码并报告问题这可能会导致错误或通常不建议的策略.问题是我提到的这段代码被报告了.说明是这样的: ... 强制垃圾回收;非常可疑,除了在基准测试代码 它继续详细说明:
..
我读了很多关于垃圾收集的东西,比如它的生成、范围等,但想知道垃圾收集什么时候被触发?如果可能的话,一个例子会很有帮助. 谢谢, 解决方案 当下列条件之一为真时发生垃圾回收: 系统物理内存不足. 托管堆上分配的对象使用的内存超过了可接受的阈值.随着流程的运行,此阈值会不断调整. 调用 GC.Collect 方法.在几乎所有情况下,您都不必调用此方法,因为垃圾收集器会持续运行.
..
想象一下,我将在 .NET 中进行异步调用,即 HttpWebRequest.BeginGetResponse,并且 HttpWebRequest 对象没有在更广泛的范围内被引用.垃圾收集器会破坏它并引起问题吗? 示例代码: 使用系统;使用 System.Net;公共类 AsyncHttpWebRequest{无效的主要(){var Request = HttpWebRequest.Cre
..
我编写了一个自定义 Rails 模型.这个模型是由一个实际的服务器而不是一个数据库表支持的(所以它不是从 ActiveRecord::Base 继承的).为了从服务器获取请求的信息,我打开了一个到它的 SSH 连接.因为 rails 不重用对象,所以会为收到的请求创建一个新对象以及与服务器的新 SSH 连接.为了减少服务器压力,我想在模型对象被垃圾收集之前关闭 SSH 连接.我想知道 ruby
..
我目前正在阅读一份未发表的硕士论文报告,我将提供反馈. 在报告中,他们提到了原生 C++ 和托管 C++ 下的 GC.我以为 C++ 没有任何标准的 GC,我是对还是错?(他们没有提到 Boehm-Demers-Weiser.) 他们在某些条件下无法正常工作.它们在一个线程中创建对象,并从另一个线程中删除指针. 解决方案 Native C++ 默认没有这样的东西(最接近这个的是
..
Java:在 JVM 中执行 GC 的频率是多少?每一秒?每一分钟?还是随机取决于内存大小?我只是想有个主意. 谢谢. 解决方案 这取决于内存使用情况和存储对象的堆.看看这个 http://javarevisited.blogspot.com/2011/04/garbage-collection-in-java.html 它不依赖于时间.它仅取决于新的内存要求和可用内存.
..
一直在使用 FMOD 进行 C# 游戏开发,但我很早就遇到了一个似乎无法解决的问题.我想做一些分支音频的东西并将一些游戏动作同步到节拍等,所以我尝试将同步点添加到我的音乐曲目中.代码如下: 公开课音乐{私人声音音乐;私人频道频道;私有 IntPtr 同步指针;公共字符串文件{获取;私人套装;}公共音乐(字符串文件){文件=文件;}公共无效负载(){音乐=新声音();Audio.System.cr
..
.NET 垃圾收集器收集对象(回收它们的内存)并执行内存压缩(将内存碎片保持在最低限度). 我想知道,由于应用程序可能对对象有很多引用,当对象的地址由于 GC 进行压缩而发生变化时,GC(或 CLR)如何管理对对象的这些引用. 解决方案 这个概念很简单,垃圾收集器简单地更新任何对象引用并将它们重新指向移动的对象. 实现有点棘手,本机代码和托管代码之间没有真正的区别,它们都是机器
..
我们正在构建一个具有激进性能 SLA 的 Web 应用程序,由于 System.gc() 调用导致 JVM 出去吃午饭,这些 SLA 会定期被违反.我们进行了一些调试,并确定在所有情况下,调用 System.gc() 的都是内部应用服务器代码.这在应用服务器启动或应用程序部署时会发生几次,我们并不关心.但是,System.gc() 也会在应用启动并通过内部应用服务器调用 NIO 类运行时定期触发.
..
我有一个 C++ 进程外 COM 服务器,它承载大量 C# 代码以支持 C++ COM 对象公开的 API. 出于多种原因,我正在考虑取消我的解决方案中的 C++ 部分.但是,由于我无法控制的限制,我必须保留进程外 COM 服务器.Microsoft 确实在这里提供了一个典型示例. 看这个例子有一些我不明白的地方.在消息循环开始之前,会创建一个计时器以每 5 秒调用一次 GC.Coll
..
让我们考虑以下简单的程序: 类程序{类测试类{~TestClass(){Console.WriteLine("~TestClass()");}}静态无效主要(字符串 [] 参数){弱引用弱引用;{var obj = new TestClass();弱引用 = 新弱引用(obj);Console.WriteLine("离开区块");}Console.WriteLine("GC.Collect()"
..