Я использую Java на очень похожих виртуальных машинах и не могу найти объяснение, почему SerialGC выбран вместо G1GC в одном случае.Это та же версия Java, та же ОС, тот же тип экземпляра виртуальной машины в AWS, и я подозреваю, что единственное отличие - это настройки контейнера, но я не знаю, как точно определить, какие изменения.Есть ли способ получить объяснение того, почему виртуальная машина решает выбрать эти или другие параметры?
Java-версия в обоих случаях:
java version "10.0.1" 2018-04-17
Java(TM) SE Runtime Environment 18.3 (build 10.0.1+10)
Java HotSpot(TM) 64-Bit Server VM 18.3 (build 10.0.1+10, mixed mode)
При запуске Javaв одном случае:
java -XX:+PrintFlagsFinal -XX:+PrintCommandLineFlag
выход:
Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF8
-XX:InitialHeapSize=253366976 -XX:MaxHeapSize=4053871616 -XX:+PrintCommandLineFlags -XX:+PrintFlagsFinal -XX:ReservedCodeCacheSize=251658240 -XX:+SegmentedCodeCache -XX:+UseCompressedClassPointers -XX:+UseCompressedOops -XX:+UseSerialGC
[Global flags]
(...)
bool UseG1GC = false {product} {default}
bool UseParallelGC = false {product} {default}
bool UseSerialGC = true {product} {ergonomic}
И в другом:
Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF8
-XX:G1ConcRefinementThreads=8 -XX:InitialHeapSize=253480064 -XX:MaxHeapSize=4055681024 -XX:+PrintCommandLineFlags -XX:+PrintFlagsFinal -XX:ReservedCodeCacheSize=251658240 -XX:+SegmentedCodeCache -XX:+UseCompressedClassPointers -XX:+UseCompressedOops -XX:+UseG1GC
[Global flags]
(...)
bool UseG1GC = true {product} {ergonomic}
bool UseParallelGC = false {product} {default}
bool UseSerialGC = false {product} {default}