Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/344.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何避免垃圾收集停止IBMJava/JVM中的世界事件_Java_Garbage Collection_Jvm_Aix - Fatal编程技术网

如何避免垃圾收集停止IBMJava/JVM中的世界事件

如何避免垃圾收集停止IBMJava/JVM中的世界事件,java,garbage-collection,jvm,aix,Java,Garbage Collection,Jvm,Aix,在使用infinispan开发基于wildfly的内存中应用程序时,我们面临着IBM Java实现(在AIX上)的问题 在Oracle中,引入了新的策略G1垃圾收集,以避免长时间的垃圾收集在完整GC期间停止JVM。据我所知,IBM没有在Java实现中实现这一策略。因此,如何在IBMJava上处理大型堆在线应用程序,特别是如何避免或至少最小化停止世界垃圾收集 谢谢,BR KlausG1收集器对旧的gen.堆空间执行增量收集(和压缩)。然而,如果它无法跟上年轻一代的推广速度,它将求助于世界压缩系列的

在使用infinispan开发基于wildfly的内存中应用程序时,我们面临着IBM Java实现(在AIX上)的问题

在Oracle中,引入了新的策略G1垃圾收集,以避免长时间的垃圾收集在完整GC期间停止JVM。据我所知,IBM没有在Java实现中实现这一策略。因此,如何在IBMJava上处理大型堆在线应用程序,特别是如何避免或至少最小化停止世界垃圾收集


谢谢,BR Klaus

G1收集器对旧的gen.堆空间执行增量收集(和压缩)。然而,如果它无法跟上年轻一代的推广速度,它将求助于世界压缩系列的全停,因此你仍然可以看到G1在延迟(暂停)方面的显著峰值。G1将堆空间划分为多个区域,以便年轻和老代成为内存的逻辑区域(每个区域都是一组区域),而不是虚拟内存的连续区域。通过这样做,可以彼此独立地处理区域,并将活动对象较少的区域优先于活动对象较多的区域,以提高收集效率

IBM有不同于OpenJDK中提供的策略(因此也有来自Oracle的Hotspot)。您应该了解两个方面:gencon(一种并发标记扫描算法)和metronome(一种设计为更实时的收集器)。但是,Metronome仅在Linux上受支持。即使这样,也会退回到完整的STW集合,因此在极端情况下可能会有明显的暂停


不幸的是,在AIX上,gencon是最小化暂停时间的最佳选择。由于这是一个分代收集器,您可以通过最小化代码生成的长寿命对象的数量来减少暂停时间。这样,对象在一次小收集期间收集,而不会升级到旧版本。正是(旧版本的)主要收集会导致较长的暂停。

Afaik IBM JVM提供了多个不同的GC,就像OpenJDK一样。你查过他们的文件了吗?是的,我查过了。但是,即使使用-Xgcpolicy:optavgpause,JVM也会在oracle JVM中以停止世界事件的方式运行,因此可以通过使用-XX:MaxGCPauseMillis=200等参数来最小化暂停时间。我找不到IBM提供的任何类似的东西……值得一看其中的几个链接,让我们指定metronome行为
bash-4.3$java-Xgcpolicy=metronome JVMJ9VM007E Nicht erkannte Befehlszeilenoption:-Xgcpolicy=metronome错误:无法创建java虚拟机。错误:发生致命异常。程序将退出。