garbage-collection相关内容

使用 sun.misc.Unsafe? 强制释放直接 ByteBuffer 已分配的本机内存的示例

JDK 提供了分配所谓的直接 ByteBuffers 的能力,其中内存在 Java 堆之外分配.这可能是有益的,因为垃圾收集器不会触及此内存,因此不会增加 GC 开销:这对于缓存等长寿命事物的属性非常有用. 然而,现有实现存在一个关键问题:只有在对拥有的 ByteBuffer 进行垃圾回收时才异步分配底层内存;没有办法强制提前释放.这可能会产生问题,因为 GC 周期本身不受 ByteBuff ..
发布时间:2022-01-16 10:17:18 Java开发

.NET 中的垃圾收集(世代)

我阅读了很多 .NET 性能文章,这些文章描述了 Gen1、Gen2 垃圾收集和幸存几代的对象. 为什么对象会在集合中幸存下来? 什么是固定? 解决方案 在垃圾收集器中有多个代的一个原因是避免因碎片而丢失内存. 每个函数调用都可能意味着创建和删除多个对象的集合,因此您的程序的内存堆往往会很快碎片化.这留下了不太有用的漏洞.结果是您的程序需要定期进行碎片整理,就像硬盘一样. ..
发布时间:2022-01-16 10:17:10 C#/.NET

我可以触发 JavaScript 的垃圾回收吗?

我想触发 JavaScript 垃圾回收.是否可以?我为什么要或不想这样做? 解决方案 我踏上了一小段旅程,想要回答你的一个问题:有可能吗? 全城的人都在说删除引用就行了.有人说擦除对象是额外的保证(示例).所以我写了一个脚本来尝试书中的每一个技巧,我惊讶地发现在 Chrome (22.0.1229.79) 和 IE (9.0.8112.16421) 中,垃圾收集似乎不起作用.Fir ..
发布时间:2022-01-16 10:16:38 前端开发

调整垃圾收集以实现低延迟

我正在寻找关于在低延迟至关重要的环境中如何最好地调整年轻一代(相对于老一代)大小的论据. 我自己的测试倾向于表明当年轻代相当大时延迟最低(例如 -XX:NewRatio 应用程序在 linux 64 位,jdk 6 上运行. 内存使用量是在启动时加载大约 50 兆字节的长寿命对象(=数据缓存),并且从那里只创建(许多)非常短寿命的对象(平均寿命 一些垃圾回收周期需要超过 10 毫秒 ..
发布时间:2022-01-16 10:16:32 Java开发

Java 阻塞问题:为什么 JVM 会阻塞许多不同类/方法中的线程?

更新:这看起来像是内存问题.一个 3.8 Gb 的 Hprof 文件表明,当这种“阻塞"发生时,JVM 正在转储其堆.我们的运营团队看到该站点没有响应,进行了堆栈跟踪,然后关闭了该实例.我相信他们在堆转储完成之前关闭了该站点.日志中没有错误/异常/问题证据——可能是因为 JVM 在生成错误消息之前就被杀死了. 原始问题我们最近遇到了一个应用程序出现的情况——对最终用户来说——挂起.我们在应用 ..

为高响应服务器应用程序调整 JVM (GC)

我在 64 位 Linux 上运行一个应用服务器,它有 8 个核心 CPU 和 6 GB 内存. 服务器必须高度响应. 经过一番检查,我发现在服务器上运行的应用程序创建了相当大量的短期对象,并且只有大约 200~400 MB 的长期对象(只要没有内存泄漏) 看完http://java.sun.com/javase/技术/热点/gc/gc_tuning_6.html我使用这些 JV ..
发布时间:2022-01-16 10:15:59 Java开发

后台垃圾回收和并发垃圾回收的区别?

我读到使用 .NET Framework 4 替换了当前的垃圾收集实现: .NET Framework 4 提供背景垃圾收集.这功能替换并发垃圾以前版本中的集合和提供更好的性能. 在这个页面那里是一个解释它是如何工作的,但我不确定我是否理解它. 在实际应用中,这种新的 GC 实现有什么好处?它是一个可用于推动从 3.5 或之前版本过渡到 4.0 的功能吗? 解决方案 这里 ..
发布时间:2022-01-16 10:15:29 其他开发

如何在java中销毁一个对象?

我在一次采访中遇到了这个问题,有以下选择: 如何在java中销毁一个对象? 一个.System.gc();湾.Runtime.getRuntime.gc();C.对象.删除();d.对象.finalize();e.Java 自己执行 gc,无需手动执行. 答案应该是e? 如果没有 e 怎么办?然后 ?显然 c 不是答案.a 和 b 将为整个应用程序执行 gc(问题需要一个对象).我 ..
发布时间:2022-01-16 10:15:21 Java开发

如何强制 JavaScript 深度复制字符串?

我有一些看起来像这样的 javascript 代码: var myClass = {编号:{}myFunc:函数(巨大字符串){var id = huge_string.substr(0,2);ids[id] = 真;}} 稍后,该函数被一些大字符串 (100 MB+) 调用.我只想保存在每个字符串中找到的短 id.但是,谷歌浏览器的子字符串函数(实际上是我的代码中的正则表达式)只返回一个“切 ..

如何从命令行检查正在运行的 JVM 的堆使用情况?

我能否从命令行检查正在运行的 JVM 的堆使用情况,我指的是实际使用情况,而不是 Xmx 分配的最大数量. 我需要它是命令行,因为我无法访问窗口环境,并且我想要基于值的脚本,应用程序在 Jetty 应用程序服务器中运行 解决方案 可以使用jstat,比如: jstat -gc pid 这里有完整的文档:http://docs.oracle.com/javase/7/docs/t ..
发布时间:2022-01-16 10:14:59 Java开发

什么是类的 GC 根?

在 Java 中,有称为 垃圾收集根(GC 根)的特殊对象.它们作为垃圾收集标记机制的根对象(见图). 这篇文章介绍了四种类型的GC root: 局部变量 活跃的话题 静态变量 JNI 参考 还提到: 类本身可以被垃圾回收. 没有收集 GC 根,因此类本身不是 GC 根. 那么类的 GC 根是什么? 解决方案 那么类的 GC 根是什么? ..
发布时间:2022-01-16 10:14:39 Java开发

Azul的“无休止"的解释垃圾收集器

我刚刚读到这个: http://www.artima.com/lejava/articles/azul_pauseless_gc.html 虽然我有一些编译器方面的经验,但我没有做过任何与垃圾收集相关的事情;对我来说是一个大黑匣子. 我一直在努力理解文章中提到的问题.我理解这个问题(在执行大多数垃圾收集器时会有一个暂停),并且我理解他们声称他们的实现没有这个问题.但我不明白为什么 ..
发布时间:2022-01-16 10:14:33 其他开发

卡桌和作家屏障实际上是​​如何工作的?

我正在阅读一些关于 Java 垃圾收集的资料,以便更深入地了解 GC 过程中真正发生的事情. 我遇到了一种叫做“牌桌"的机制.我已经用谷歌搜索了它,但没有找到全面的信息.大多数解释都很肤浅,描述得像魔术一样. 我的问题是:卡片表和写屏障如何工作?牌桌上有什么标记?那么垃圾收集器如何知道该特定对象被老一代中持久存在的另一个对象引用. 我想对那个机制有一些实际的想象,就像我应该准备一 ..
发布时间:2022-01-16 10:14:18 Java开发

垃圾优先垃圾收集器如何工作?

谁能解释一下 G1 垃圾收集器的工作原理?我还没有在任何地方找到任何全面、易于理解的描述. 谢谢 解决方案 收集器将堆分成固定大小的区域并跟踪这些区域中的实时数据.它保留了一组指针——“记忆集"——进出该区域.当认为有必要进行 GC 时,它首先收集实时数据较少的区域(因此,“垃圾优先").通常,这可能意味着一步收集整个区域:如果指向某个区域的指针数量为零,则不需要对该区域进行标记或扫 ..
发布时间:2022-01-16 10:09:06 Java开发

为什么JVM full GC 需要stop-the-world?

我认为是因为 JVM 需要移动对象,对吗? 解决方案 首先,垃圾维基百科上的收藏文章真的很好阅读. 一般来说,GC 不需要 Stop-the-World 暂停.有些 JVM 实现(几乎)没有暂停(例如 Azul Zing JVM).JVM 何时需要 STW 收集垃圾取决于它使用的算法. Mark Sweep Compact (MSC) 是 HotSpot 默认使用的流行算法.它 ..
发布时间:2022-01-16 10:09:00 其他开发

如何在 C++ 中实现垃圾回收

我看到一些关于在 C 中实现 GC 的帖子,有些人说不可能这样做,因为 C 是弱类型的.我想知道如何在C++中实现GC. 我想知道如何做.非常感谢! 这是我朋友告诉我的彭博采访问题.那个时候他做的不好.我们想知道您对此的想法. 解决方案 C 和 C++ 中的垃圾收集都是困难的话题,原因如下: 指针可以转换为整数,反之亦然.这意味着我可以拥有一块只有通过获取整数、将其类型转 ..
发布时间:2022-01-16 10:08:52 C/C++开发