Перейти к основному содержимому

Параметры JVM InitialRAMPercentage, MinRAMPercentage и MaxRAMPercentage

· 3 мин. чтения

1. Обзор

В этом руководстве мы обсудим несколько параметров JVM, которые мы можем использовать для установки процента оперативной памяти JVM.

Представленные в Java 8 параметры InitialRAMPercentage , MinRAMPercentage и MaxRAMPercentage помогают настроить размер кучи приложения Java.

2. -XX: Начальный RAMPercentage

Параметр InitialRAMPercentage JVM позволяет нам настроить начальный размер кучи приложения Java. Это процент от общей памяти физического сервера или контейнера , передаваемый как двойное значение.

Например, если мы установим XX:InitialRAMPercentage=50.0 для физического сервера с полной памятью 1 ГБ, то начальный размер кучи будет около 500 МБ (50% от 1 ГБ).

Для начала давайте проверим значение IntialRAMPercentage по умолчанию в JVM:

$ docker run openjdk:8 java -XX:+PrintFlagsFinal -version | grep -E "InitialRAMPercentage"
double InitialRAMPercentage = 1.562500 {product}

openjdk version "1.8.0_292"
OpenJDK Runtime Environment (build 1.8.0_292-b10)

Затем давайте установим начальный размер кучи 50% для JVM:

$ docker run -m 1GB openjdk:8 java -XX:InitialRAMPercentage=50.0 -XX:+PrintFlagsFinal -version | grep -E "InitialRAMPercentage"
double InitialRAMPercentage := 50.000000 {product}

openjdk version "1.8.0_292"
OpenJDK Runtime Environment (build 1.8.0_292-b10)

Важно отметить, что JVM игнорирует InitialRAMPercentage при настройке параметра -Xms .

3. -XX:MinRAMPercentage

Параметр MinRAMPercentage , в отличие от его названия, позволяет установить максимальный размер кучи для JVM, работающей с небольшим объемом памяти (менее 200 МБ).

Во-первых, мы рассмотрим значение MinRAMPercentage по умолчанию :

$ docker run openjdk:8 java -XX:+PrintFlagsFinal -version | grep -E "MinRAMPercentage"
double MinRAMPercentage = 50.000000 {product}

openjdk version "1.8.0_292"
OpenJDK Runtime Environment (build 1.8.0_292-b10)

Затем давайте используем параметр, чтобы установить максимальный размер кучи для JVM с общей памятью 100 МБ:

$ docker run -m 100MB openjdk:8 java -XX:MinRAMPercentage=80.0 -XshowSettings:VM -version

VM settings:
Max. Heap Size (Estimated): 77.38M
Ergonomics Machine Class: server
Using VM: OpenJDK 64-Bit Server VM

openjdk version "1.8.0_292"
OpenJDK Runtime Environment (build 1.8.0_292-b10)

Кроме того, JVM игнорирует параметр MaxRAMPercentage при установке максимального размера кучи для небольшого сервера/контейнера памяти:

$ docker run -m 100MB openjdk:8 java -XX:MinRAMPercentage=80.0 -XX:MaxRAMPercentage=50.0 -XshowSettings:vm -version
VM settings:
Max. Heap Size (Estimated): 77.38M
Ergonomics Machine Class: server
Using VM: OpenJDK 64-Bit Server VM

openjdk version "1.8.0_292"
OpenJDK Runtime Environment (build 1.8.0_292-b10)

4. -XX:MaxRAMPercentage

Параметр MaxRAMPercentage позволяет установить максимальный размер кучи для JVM, работающей с большим объемом памяти (более 200 МБ).

Во-первых, давайте рассмотрим значение MaxRAMPercentage по умолчанию :

$ docker run openjdk:8 java -XX:+PrintFlagsFinal -version | grep -E "MaxRAMPercentage"
double MaxRAMPercentage = 25.000000 {product}

openjdk version "1.8.0_292"
OpenJDK Runtime Environment (build 1.8.0_292-b10)

Затем мы можем использовать параметр, чтобы установить максимальный размер кучи на 60% для JVM с общей памятью 500 МБ:

$ docker run -m 500MB openjdk:8 java -XX:MaxRAMPercentage=60.0 -XshowSettings:vm -version
VM settings:
Max. Heap Size (Estimated): 290.00M
Ergonomics Machine Class: server
Using VM: OpenJDK 64-Bit Server VM

openjdk version "1.8.0_292"
OpenJDK Runtime Environment (build 1.8.0_292-b10)

Точно так же JVM игнорирует параметр MinRAMPercentage для большого сервера/контейнера памяти:

$ docker run -m 500MB openjdk:8 java -XX:MaxRAMPercentage=60.0 -XX:MinRAMPercentage=30.0 -XshowSettings:vm -version
VM settings:
Max. Heap Size (Estimated): 290.00M
Ergonomics Machine Class: server
Using VM: OpenJDK 64-Bit Server VM

openjdk version "1.8.0_292"
OpenJDK Runtime Environment (build 1.8.0_292-b10)

5. Вывод

В этой короткой статье мы обсудили использование параметров JVM InitialRAMPercentage , MinRAMPercentage и MaxRAMPercentage для установки процентов оперативной памяти, которые JVM будет использовать для кучи.

Во-первых, мы проверили значения по умолчанию для флагов, установленных на JVM. Затем мы использовали параметры JVM для установки начального и максимального размеров кучи.