7得票1回答
使用G1垃圾回收器,当实例数量较多时,分配性能是否会下降?

在将一些应用程序从CMS迁移到G1时,我发现其中一个应用程序的启动时间延长了4倍。由于GC循环导致的应用程序停止时间不是原因。比较应用程序行为后,我发现这个应用程序在启动后携带着2.5亿个活动对象(在12G堆中)。进一步调查显示,该应用程序在前500万个分配期间速度正常,但随着活动对象池越来越...

7得票1回答
如何解释 G1 GC 日志以及在 OutOfMemoryError 之前的相关内容?

我想知道有没有人能够解释一下G1 GC日志如何导致OutOfMemoryError? 我知道堆转储是找出实际使用堆的最佳方法,但是由于其中包含不能离开客户端站点的受保护信息,因此我无法获得它。我所拥有的只有应用程序日志(其中包括OOME的堆栈)和G1 GC日志。 完整的G1 GC日志包含很...

11得票4回答
G1: 混合垃圾回收和完全垃圾回收有什么区别?

对于垃圾优先收集器,young gc 表示只在年轻代执行垃圾回收,mixed gc 会清理年轻代和老年代。 那么full gc是什么?为什么它的持续时间比mixed gc长? 我进行了一些搜索,但没有找到任何解释full gc的帖子。

9得票1回答
G1GC是否会在Xms=Xmx的情况下将内存释放回操作系统?

阅读了像这篇回答和JEP-346这样的内容后,我意识到G1确实会将内存释放回操作系统。 然而,它是否会将内存释放回操作系统,甚至降低当前内存使用量到初始堆内存以下(即在此JEP之前,在我的情况下是JDK11)? 假设我有一个Java 11 VM运行,其中Xms和Xmx设置为5GB,在8GB...

7得票2回答
为什么堆被划分为Eden、Survivor和Old Generation空间?

请问您关于JVM垃圾回收过程的问题能否回答一下? 为什么堆被分成Eden、Survivor空间和老年代? 当进行年轻代清理时,对象通过引用从根开始访问以查找不可达对象。可达对象标记为“存活”,而不可达对象未被标记并将被消除。 因此,所有对象都被考虑在内,包括在老年代分配的对象也会被访问和...

48得票3回答
Garbage-First垃圾收集器是如何工作的?

有人可以解释一下 G1 垃圾收集器是如何工作的吗?我还没有找到任何全面易懂的描述。 谢谢

16得票3回答
-XX:+UseG1GC是否是-Xincgc的正确替代品?

目前,我们通过在Java命令中添加-Xincgc来使用增量垃圾收集器。在JDK 8中,这个开关已经被弃用了。那么它的等效替代是什么?-XX:+UseG1GC? 背景:该应用程序有一个8GB的堆,并创建大量短生命周期对象。我注意到它经常暂停几秒钟来进行垃圾回收。出于好奇心,我添加了-Xincg...

29得票6回答
G1GC仍然没有正式的生产就绪吗?

我想知道JDK 7版本中"垃圾优先"(G1)收集器的官方状态如何。我希望可以使用G1作为低暂停的GC替代CMS,但前提是我真正相信它的健壮性。 JDK 7发布之前,G1被宣传为一个闪亮的新GC,将取代CMS收集器并成为JDK 7的默认GC。然而,现在随着Oracle JDK 7u1的发布,G...

7得票3回答
当我增加内存时,为什么会更频繁地发生垃圾回收?

我有一个关于g1gc的问题。 这些是堆使用的图表。 上面是-Xms4g -Xmx4g。 下面是-Xms8g -Xmx8g。 我不知道为什么使用8g选项会更频繁地发生g1gc。其他选项都是默认值。 服务器规格是40个逻辑处理器。 附加问题 能否通过增加内存大小来加快内...

16得票2回答
G1垃圾收集器的字符串去重功能默认开启吗?

JEP 192: G1中的字符串去重在Java 8 Update 20中实现,增加了新的字符串去重功能: 通过增强G1垃圾收集器,自动且持续地去重重复的字符串,从而减少Java堆的活动数据集。 JEP页面提到一个命令行选项UseStringDeduplication(bool),允许启...