Gradle:增加由 gradle 运行任务启动的 Java 进程的堆大小

2022-09-02 13:18:55

我有一个启动java项目的gradle任务。基本上是这样的:

gradle run -PmainClass=package.path.ServiceMain

现在,我想增加由 gradle 启动的 java 进程的堆,因为标准堆大小太小。问题是,我只成功地增加了 gradle 进程的大小,而不是 gradle 项目启动的 java 进程的大小。我在我的Java代码中用这个命令检查堆大小:

Runtime.getRuntime().totalMemory()

我测试了这个检查,像这样使用它是有效的。但它向我表明,gradle 总是以相同的堆大小启动我的 Java 进程。

我尝试了这些选项:

DEFAULT_JVM_OPTS='-Xmx1024m -Xms512m'
GRADLE_OPTS='-Xmx1024m -Xms512m'
JAVA_OPTS='-Xmx1024m -Xms512m'

没有成功。

我也试过这个:

gradle run -PmainClass=package.path.ServiceMain -DXmx1024m -DXms512m

尽管如此,仍然没有成功。

当然,我已经搜索了网络,但我发现只有一些提示说我可以修改文件。不幸的是,这不是我想要/能做的。build.gradle

当通过 gradle 运行任务启动 java 程序时,我需要在命令行上为 java 程序指定 java 堆大小(由于实际的项目结构)。

提前感谢您的支持。任何帮助是值得赞赏的。


答案 1

正如上面@Opal所述,这是不可能的

我能找到的最简单/最简单的替代方案(目前)是将这个小片段添加到文件中:build.gradle

tasks.withType(JavaExec) {
    jvmArgs = ['-Xms512m', '-Xmx512m']
}

或者,可以使用环境变量 。甚至更好:环境变量;此变量的内容将用作(附加)JVM 选项。_JAVA_OPTIONSJAVA_TOOL_OPTIONS

感谢@ady的提示。


答案 2

在 Linux 中使用此命令:可以更改值 4000 和 8000。而不是JAVA_OPTS使用_JAVA_OPTIONSexport _JAVA_OPTIONS="-Xms4000m -Xmx8000m"


旧答案:您可以通过编辑$GRADLE_USER_HOME/.gradle/gradle.properties(默认为~/.gradle/gradle.properties)并设置org.gradle.jvmargs来设置或增加用于Gradle构建和Gradle守护进程的内存使用限制(或其他JVM参数):

org.gradle.jvmargs=-Xmx2024m -XX:MaxPermSize=512m

资料来源:https://riptutorial.com/gradle/example/11911/tuning-jvm-memory-usage-parameters-for-gradle


推荐