Как правильно установить Xmx и Xms в Gradle

#java #gradle #jvm #java-11

#java #gradle #jvm #java-11

Вопрос:

Я пытаюсь исправить размер кучи памяти, используя -Xmx50M в файле build.gradle, это не работает, размер памяти всегда превышает 50M.

Подробные сведения :

Мой build.gradle

    plugins {
    id 'java'
    id 'application'
    id 'org.openjfx.javafxplugin' version '0.0.10'
}

group 'com.karrty'

repositories {
    mavenCentral()
}

ext {
    junitVersion = '5.7.1'
}

sourceCompatibility = '17'
targetCompatibility = '17'

tasks.withType(JavaCompile) {
    options.encoding = 'UTF-8'
}

application {
    mainModule = 'com.karrty.karrtyversion1'
    mainClass  = 'com.karrty.karrtyversion1.Principle.main'
}

javafx {
    version = '16'
    modules = ['javafx.controls', 'javafx.fxml']
}

dependencies {
    implementation('org.controlsfx:controlsfx:11.1.0')
}

run {

    jvmArgs = [
         
            "-Xms50m",
            "-Xmx50m"
    ]
}
 

Снимок экрана проблемы

введите описание изображения здесь

как вы можете видеть, приложение разместило 500 МБ в памяти и использует почти 250 МБ, даже если я указал размер кучи памяти в 50 МБ.

Ответ №1:

Я не уверен на 100%, но я думаю, что вы должны использовать gradle.properties для установки -Xmx50M . Вы можете проверить официальные документы, чтобы убедиться. gradle.properties должен выглядеть следующим образом

 org.gradle.jvmargs=-Xmx512m "-XX:MaxMetaspaceSize=256m"
 

Это значение по умолчанию, и вы можете изменить его в зависимости от того, что вам нужно сделать.

Комментарии:

1. к сожалению, это тоже не работает, я думаю, что вставка аргументов виртуальной машины в gradle.properties или в build.gradle (как я и делал) одинакова, единственное отличие — это обозначение

Ответ №2:

По какой-то причине использование коротких аргументов виртуальной Xms50m машины и Xmx50m не работает с gradle, но полные выражения -XX:MaxHeapSize=50m и -XX:InitialHeapSize=50 работают, если у вас также есть такая же проблема, просто замените эти короткие выражения их полными выражениями, и это сработает.