Gradle 如何正确设置 Xmx 和 Xms

How to set Xmx and Xms properly in Gradle

我正在尝试使用 build.gradle 文件中的 -Xmx50M 修复堆大小内存,它不起作用,内存大小总是超过 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"
    ]
}

问题的屏幕截图

如您所见,应用程序在内存中找到了 500MB 并使用了将近 250MB,即使我将堆内存大小指定为 50MB。

不是 100% 确定,但我认为您应该使用 gradle.properties 来设置 -Xmx50M。 您可以检查 the official docs 以确保 . gradle.properties 应该是这样的

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

这是默认设置,您可以根据需要进行更改。

由于某些原因,使用短 VM 参数 Xms50mXmx50m 不适用于 gradle,但完整表达式 -XX:MaxHeapSize=50m-XX:InitialHeapSize=50 是工作,如果你也有同样的问题,只需用完整的表达式替换那些短表达式就可以了。