9得票3回答
在Java中零垃圾大字符串反序列化,巨型对象问题

我正在寻找一种在Java中从byte[]反序列化String且产生的垃圾最少的方法。由于我正在创建自己的序列化器和反序列化器,因此我完全可以在服务器端(即在序列化数据时)和客户端(即在反序列化数据时)实现任何解决方案。 我已经成功地通过迭代String的字符(String.charAt(i)...

82得票8回答
Java 7(JDK 7)垃圾回收和G1文档

Java 7 已经发布了一段时间,但我找不到关于配置 垃圾回收器 的好资源,特别是新的 G1 回收器。 我的问题: G1 是 Java 7 中的默认收集器吗?如果不是,我该如何激活 G1? Java 7 中 g1 有哪些可选设置? 在 Java 7 中是否对其他收集器(如 cms 或 p...

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

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

7得票1回答
Java 8中G1垃圾收集器是否存在不必要的Full GC?

我们注意到使用G1垃圾收集器时偶尔会出现并发标记溢出的情况。一旦出现并发标记溢出重置,这种溢出将在下一个并发标记阶段继续发生。最终,由于并发标记看起来已不再起作用,将导致完全GC。 我们有四台运行相同 Apache Storm 应用程序并具有相同数据流量的计算机。只有其中一台机器每周会遇到此...

46得票1回答
为什么在 Java 9 G1 工作约 6 小时后,即使实际负载没有增加,性能也会下降?

我将一个实例(2 vCPU、2GB RAM,负载约为4k req/sec)从最新的Java 8切换到Java 9。一开始一切都很好,CPU使用率与之前相同。然而,大约6小时后,CPU消耗增加了4%(从21%增加到25%),原因不明。我没有流量激增,没有增加内存消耗,没有度量变化(我对代码中的每...

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

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

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

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

12得票1回答
在Java中,是什么导致了长时间的自旋和同步时间?

在Java 8更新45中,将这些选项添加到java调用中:-XX:+PrintGCApplicationStoppedTime -XX:+PrintSafepointStatistics -XX:PrintSafepointStatisticsCount=1 显示给我这样的统计数据:vmop ...

7得票1回答
几天之后,GC暂停时间变得非常长。

我正在运行一个构建系统。我们过去使用CMS收集器,但是我们开始遭受非常长的full GC周期的困扰,吞吐量(不进行GC的时间)约为90%。因此,我现在决定切换到G1,并假设即使我有更长的总GC时间,暂停时间也会更短,从而确保更高的可用性。所以这个想法似乎比我预期的要好,我几乎3天没有看到任何f...

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

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