Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.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
Java 在开始时管理JVM OldGen spike_Java_Performance_Garbage Collection_Jvm - Fatal编程技术网

Java 在开始时管理JVM OldGen spike

Java 在开始时管理JVM OldGen spike,java,performance,garbage-collection,jvm,Java,Performance,Garbage Collection,Jvm,我们目前使用的VMOptions如下所示,它是使用springwebflux设计的一项微服务。我们目前为每个pod保留了4个CPU和5 GB内存 -Xms4096m-Xmx4096m-Xss512k-XX:+UseG1GC-XX:+UseStringDuplication-XX:ParallelGCThreads=8-XX:ConcGCThreads=2-XX:MaxGCPauseMillis=120-XX:G1ReservePercent=10 每次我重新部署我们的应用程序并引入一些固定的Q

我们目前使用的VMOptions如下所示,它是使用springwebflux设计的一项微服务。我们目前为每个pod保留了4个CPU和5 GB内存

-Xms4096m-Xmx4096m-Xss512k-XX:+UseG1GC-XX:+UseStringDuplication-XX:ParallelGCThreads=8-XX:ConcGCThreads=2-XX:MaxGCPauseMillis=120-XX:G1ReservePercent=10


每次我重新部署我们的应用程序并引入一些固定的QPS负载时,我观察到OldGen上出现了3个大的峰值,然后,它设法以某种稳定的和谐方式运行。我从一开始就期待着稳定的和谐,但不确定一开始会出现什么样的行为。任何人也能面对这种情况或知道解决方法。

您观察到G1自适应IHOP的效果

从:

起始堆占用百分比(IHOP)是 将触发初始标记集合,并将其定义为 旧一代规模的百分比

默认情况下,G1通过观察自动确定最佳IHOP 标记需要多长时间以及通常分配多少内存 老一代在标记周期中。此功能称为 自适应IHOP。如果此功能处于活动状态,则选项 -XX:InitiatingHeapOccupencyPercent将初始值确定为当前旧代大小的百分比,只要存在 没有足够的观测数据来很好地预测地震 堆占用阈值。使用 选项-XX:-g1useAptiveIhop。在本例中 -XX:InitiatingHeapOccupencyPercent始终确定此阈值

默认情况下,
-XX:G1AdaptiveHopNuminitialSamples
等于3。这意味着,G1使用前3个完成的标记周期作为最佳IHOP预测的输入


这种行为没有错,不需要“修复”任何东西。但是,如果您知道特定应用程序的最佳IHOP值,并且希望GC从一开始就使用它,请关闭
-XX:-g1UseAptiveIhop
,然后手动设置
-XX:InitiatingHeapOccupencyPercent

好信息,只需稍加注意:与许多其他自调整值一样:将其设置为固定值也会增加“正确”值随时间变化(由于代码或使用模式的变化)的风险,从长远来看,使用固定值可能比根本不指定值更糟糕。@JoachimSauer或它也可能相反。以下是我自己的经验。