g1gc相关内容

G1垃圾回收器的String Deduplication功能是否默认开启?

JEP 192:G1 中的字符串重复数据删除 在 Java 8 中实现更新 20 添加了新的字符串重复数据删除功能: 通过增强 G1 垃圾收集器减少 Java 堆实时数据集,以便自动连续删除重复的 String 实例. JEP 页面提到命令行选项 UseStringDeduplication (bool) 允许启用或禁用去重功能.但是 JEP 页面并没有指示默认值. ➠ 在与 J ..
发布时间:2022-01-16 12:39:53 Java开发

为什么堆分为伊甸园、幸存者空间和老年代?

你能回答我一个关于 JVM 垃圾收集过程的问题吗? 为什么堆分为伊甸园、幸存者空间和老年代? 在处理年轻疏散时,通过从根开始的引用访问对象以找出无法访问的对象.可达对象被标记为“活动",不可达对象不被标记,将被淘汰. 因此,考虑 ALL 个对象,包括在老年代分配的对象,如果它们可达,也会被访问和标记. 据我了解,一次回收年轻代和老代要求很高,因为这些代位于内存的不同连续部分 ..
发布时间:2022-01-16 10:27:49 Java开发

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

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

为什么在 Java 9 G1 工作约 6 小时后性能会下降,而负载却没有实际增加?

我将 1 个实例(2 个 vCPU,2GB RAM,负载 ~4k req/sec)切换到 Java 9(来自最新的 Java 8).有一段时间,一切都很好,CPU使用率和以前一样.但是,大约 6 小时后,CPU 消耗无缘无故地增加了 4%(从 21% 到 25%).我没有流量高峰,没有内存消耗增加,没有指标变化(我在代码中的每个方法都有计数器).什么都没有. 我让这个实例保持原样大约 12 ..
发布时间:2022-01-16 10:20:06 Java开发

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

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

生产环境中的 Java G1 垃圾收集

既然 Java 7 将默认使用新的 G1 垃圾回收,那么 Java 是否能够处理一个数量级更大的堆,而不会出现所谓的“破坏性"GC 暂停时间?有没有人真正在生产环境中实现过 G1,你的经验是什么? 公平地说,我唯一一次看到非常长的 GC 暂停是在非常大的堆上,比工作站要多得多.澄清我的问题;G1 会为数百 GB 的堆打开网关吗?结核病? 解决方案 听起来 G1 的重点是要更短的暂停时 ..
发布时间:2022-01-16 09:35:13 Java开发

即使 Xms = Xmx,G1GC 是否会向操作系统释放内存?

在阅读了 this 和 JEP-346,我意识到 G1 确实会将内存释放回操作系统. 但是,它是否会将内存释放回操作系统,甚至到当前内存使用量可能低于初始堆内存(即在此 JEP 之前,在我的情况下为 JDK11)? 假设我有一个 Java 11 虚拟机运行 Xms 和 Xmx 设置为 5GB,在一个 8GBRAM,但是我只消耗 1GB 左右.G1 会释放足够的内存给操作系统吗? ..
发布时间:2022-01-16 09:33:55 Java开发

使用 JDK 1.6.x G1(“垃圾优先")的经验

我想知道在最新的 JDK 中使用 G1 垃圾收集器是什么体验?我看到在我的程序中抛出了 NullPointerException,尽管代码在早期的 JDK 中没有改变并且行为正确. 解决方案 我一直在运行 jEdit 使用: -Xmx192M -XX:+UnlockExperimentalVMOptions -XX:+UseG1GC 最近几天在 Windows 上.没有遇到任何问题或行 ..
发布时间:2022-01-05 21:24:21 Java开发

G1 上的 Java 7 (JDK 7) 垃圾收集和文档

Java 7 已经发布一段时间了,但我找不到任何关于垃圾收集器配置的好资源,特别是新的 G1 收集器. 我的问题: G1 是 Java 7 中的默认收集器吗?如果不是,我该如何激活 G1? g1 在 Java7 中有哪些可选设置? 是否对 Java 7 中的 cms 或 parallel collector 等其他收集器进行了任何更改? 在哪里可以找到关于 Java 7 垃圾收集 ..
发布时间:2021-11-25 16:51:16 Java开发

java.lang.OutOfMemoryError:超出 GC 开销限制

我在一个程序中遇到此错误,该程序创建了几个(数十万)HashMap 对象,每个对象有几个(15-20)个文本条目.在提交到数据库之前,必须收集所有这些字符串(不要分解成更小的数量). 根据 Sun 的说法,错误会发生“如果在垃圾收集上花费了太多时间:如果超过 98% 的总时间花费在垃圾收集上,而回收的堆不到 2%,则会出现 OutOfMemoryError被抛出.". 显然,可以使用命 ..
发布时间:2021-11-25 15:06:30 Java开发

为什么旧的对象由次要GC清除

我正在使用Java 11和G1GC.我正在处理的应用程序是一个大数据应用程序,我注意到的奇怪的事情是我正在监视该应用程序24小时,并且没有主要的GC.但是Old gen的大小周期性地一次又一次地减小,巧合的是,当次要GC在同一分钟花费大量时间时,这种情况正在发生. 我无法理解为什么次要GC上的尖峰会清除Old gen中的数据. 解决方案 G1 GC还具有混合GC的概念,该概念为G1 GC ..
发布时间:2021-05-09 20:37:28 Java开发

如果Java的世代垃圾收集器遍历活动对象的图,那么他们如何知道要调用finalize()的对象?

我的理解是,诸如ParallelGC和G1之类的GC是“世代"收集器.垃圾回收几乎是作为副产品发生的,因为您将所有活动对象移动到新的堆区域,而旧区域中剩下的任何内容都将被覆盖.除了Java需要在死对象上调用finalize()的部分之外,这种“副产品"的解释很有意义.Java是否还在每个堆区域中保留了一个 all 对象的单独列表,它可以再次与活动对象进行比较? 解决方案 是的, GC 跟踪 ..
发布时间:2021-05-09 20:36:17 Java开发

G1GC日志中的时间

我已经阅读了G1GC日志中打印的关于不同时间的一些描述,但是当我在本地生产它们时并不能真正证明/理解.例如,以下日志是在装有Java 11的PC上生成的.我想知道,第一行0.500ms与第二行0.01s有什么区别?是由于STW暂停了应用程序0.500毫秒还是10毫秒(0.01 s)?我尝试了诸如GCeasy之类的工具,它显示的最大暂停时间为10ms,在Real = 0.00的情况下,GCeasy显 ..
发布时间:2020-06-24 18:36:47 Java开发

Intellij Idea15 CE无法使用-XX:+ UseG1GC启动

我正在尝试使用字符串实习来测试运行情况,以查看它是否有助于缓解intellij的大量内存需求.为了使用Java 8的内置实习,您需要运行G1GC.但是,将此参数添加到用户idea.vmoptions文件中会导致jvm无法启动.绝对仅此参数,其他收集器似乎不是问题.捆绑的jre是8u40,我正在OS X上运行. 12/28/16 11:06:24.559 AM idea[15003]: JNI ..
发布时间:2020-06-15 19:31:15 Java开发

记住在G1算法中设置的内容是什么?

我刚刚读了一些有关G1算法的博客. 我对使用记忆集的方法感到困惑. 这是我的想法: 由于我们可以使用DFS遍历GC-Roots中的每个引用,所以为什么需要记忆集? 使所有博客都说我们使用“记住集"的原因是,我们不需要检查每个区域来查看是否存在GC-Roots引用的对象 解决方案 您需要先了解Card Table是什么,IMO.如果存在从old generation到 ..
发布时间:2020-06-15 19:31:11 Java开发

调整G1GC参数以进行积极的垃圾收集吗?

我的JVM基本上是一个火花执行器,它一个接一个地运行任务.一项任务非常耗内存,并且在其生命周期中需要大量内存. JConsole和JVisualVM并排报告 以上JVM在带有默认参数的G1GC上运行.正如您在右侧4:25到4:32 PM之间的VisualVM报告中所看到的,峰值是由于执行者运行的每个任务引起的(本质上,每个峰值都是由于执行者在执行任务之后选择了新任务而造成的).前一个已 ..
发布时间:2020-06-15 19:31:09 Java开发