Например, настройка -xx: newratio = 3 означает, что отношение между молодым и старым поколением 1: 3. Другими словами, комбинированный размер пространств Eden и Survivor будет на одну четвертую от общего размера кучи.
То же самое было сказано: что означает значение -xx: Newratio и -xx: Oldsize JVM -флаги? Полем Однако при проверке на Java 17 с помощью java -xx: maxheapsize = 100m -xx:+printflagsfinal -version , я вижу, что maxnewsize (Young Gen) получает 2/3 Maxheapsize, делая его больше, чем старый Генерал, который противоположна тому, что говорят документы: < /p>
Код: Выделить всё
java -XX:MaxHeapSize=100M -XX:+PrintFlagsFinal -version | grep -E "MaxHeapSize|MaxNewSize|NewRatio"
size_t MaxHeapSize = 104857600 {product} {command line}
size_t MaxNewSize = 62914560 {product} {ergonomic}
uintx NewRatio = 2 {product} {default}
size_t SoftMaxHeapSize = 104857600 {manageable} {ergonomic}
openjdk version "17.0.2" 2022-01-18
OpenJDK Runtime Environment (build 17.0.2+8-86)
OpenJDK 64-Bit Server VM (build 17.0.2+8-86, mixed mode, sharing)
< /code>
Затем я запускаю одну и ту же команду с Java 8 и получаю значения, выровненные с документами и общеизвестными, которые я продолжаю видеть в Интернете: < /p>
java -Xmx100M -XX:+PrintFlagsFinal -version | grep -E "MaxHeapSize|MaxNewSize|NewRatio"
uintx MaxHeapSize := 109051904 {product}
uintx MaxNewSize := 36175872 {product}
uintx NewRatio = 2 {product}
openjdk version "1.8.0_392"
OpenJDK Runtime Environment Corretto-8.392.08.1 (build 1.8.0_392-b08)
OpenJDK 64-Bit Server VM Corretto-8.392.08.1 (build 25.392-b08, mixed mode)
Мой вопрос: что происходит? Это ошибка или что -то изменилось, но не отражено в документах? Буду признателена любое руководство по правильному направлению
edit : выяснилось, что если я указать Newratio = 2 явно, то Java 17 печатает ожидаемый результат Подобно Java 8: < /p>
Код: Выделить всё
java -XX:MaxHeapSize=100M -XX:NewRatio=2 -XX:+PrintFlagsFinal -version | grep -E "MaxHeapSize|MaxNewSize|NewRatio"
size_t MaxHeapSize = 104857600 {product} {command line}
size_t MaxNewSize = 34603008 {product} {ergonomic}
uintx NewRatio = 2 {product} {command line}
size_t SoftMaxHeapSize = 104857600 {manageable} {ergonomic}
openjdk version "17.0.2" 2022-01-18
OpenJDK Runtime Environment (build 17.0.2+8-86)
OpenJDK 64-Bit Server VM (build 17.0.2+8-86, mixed mode, sharing)
Подробнее здесь: https://stackoverflow.com/questions/794 ... tating-oth