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

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

11得票2回答
Java G1垃圾回收器处理引用对象速度慢

我在Java上运行了一个点击计数器。它每天工作 24 小时,每秒大约点击 100 次。 白天 GC 处理时间会从 20-60 ms 缓慢上升到 10000-60000 ms,然后又降回到 20-60 ms。这种模式会不时地重复。通过 GC 日志,我发现大部分时间 GC 都花在处理引用对象(Re...

11得票2回答
为什么G1成为Java 9的默认垃圾收集器?

在Java 8之前,我们见过并行GC作为默认垃圾回收器,但是最近发布的Java版本(Java 9)将G1 GC作为默认垃圾回收器。 Java为什么改用G1 GC? 是否有性能提升?

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

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

10得票1回答
VisualVM显示的Max Heap Size是Xmx的两倍

我有如下问题: 有一个Java虚拟机,Xmx选项设置为70000m = 70GB(是的,它很大)。但是如果我监视上述JVM,最大堆显示为140000m(如屏幕截图中所示)。 下面是使用的JVM选项列表:-XX:+UseG1GC -Duser.timezone=Europe/Berlin...

10得票2回答
G1GC选项-XX:ParallelGCThreads与-XX:ConcGCThreads有什么区别?

在配置G1GC时,我们有两种线程计数方式-XX:ParallelGCThreads和-XX:ConcGCThreads,它们之间的区别是什么,它们将如何影响系统性能,请提供任何参考文献。

9得票6回答
为什么要进行字符串去重,当我们已经有了字符串池?

字符串去重: 在任何应用程序中,字符串消耗了很多内存。每当垃圾收集器访问字符串对象时,会注意到字符数组。它获取它们的哈希值并将其存储在一个弱引用到数组的旁边。一旦它找到另一个具有相同哈希代码的字符串,它将逐个比较它们的字符。如果它们也匹配,则一个字符串将被修改并指向第二个字符串的字符数组。...

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

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

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

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

8得票1回答
短暂的Java应用程序:如何调整G1以延迟启动?

我有一些短期应用程序,通常(但不总是)不需要任何GC(适合在堆中,通过未引起OOM的epsilon GC证明)。 有趣的是,即使仍有大量的堆可用,G1仍然会很早地启动: [0.868s][info ][gc,start ] GC(0) Pause Young (Normal) ...