Gradle:增加gradle run task启动的java进程的堆大小

J.R*_*.R. 8 java heap gradle

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

gradle run -PmainClass=package.path.ServiceMain
Run Code Online (Sandbox Code Playgroud)

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

Runtime.getRuntime().totalMemory()
Run Code Online (Sandbox Code Playgroud)

我测试了这个检查,这样使用它是有效的.但它告诉我,gradle始终以相同的堆大小启动我的Java进程.

我试验了这些选项:

DEFAULT_JVM_OPTS='-Xmx1024m -Xms512m'
GRADLE_OPTS='-Xmx1024m -Xms512m'
JAVA_OPTS='-Xmx1024m -Xms512m'
Run Code Online (Sandbox Code Playgroud)

没有成功.

我也试过这个:

gradle run -PmainClass=package.path.ServiceMain -DXmx1024m -DXms512m
Run Code Online (Sandbox Code Playgroud)

仍然没有成功.

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

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

在此先感谢您的支持.任何帮助表示赞赏.

J.R*_*.R. 9

正如@Opal在上面说的那样是不可能的.

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

tasks.withType(JavaExec) {
    jvmArgs = ['-Xms512m', '-Xmx512m']
}
Run Code Online (Sandbox Code Playgroud)


ady*_*ady 7

在 Linux 中使用此命令:export _JAVA_OPTIONS="-Xms4000m -Xmx8000m"其中值 4000 和 8000 可以更改。使用 _JAVA_OPTIONS 代替 JAVA_OPTS


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

org.gradle.jvmargs=-Xmx2024m -XX:MaxPermSize=512m
Run Code Online (Sandbox Code Playgroud)

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

  • 我明白了,那么你可以在linux中使用这个命令: `export _JAVA_OPTIONS="-Xms4000m -Xmx8000m"` 其中值4000和8000可以更改。使用“_JAVA_OPTIONS”代替“JAVA_OPTS”。 (3认同)
  • 再次感谢@ady:我看到 JAVA_TOOL_OPTIONS 也可用并记录在案:https://docs.oracle.com/javase/8/docs/technotes/guides/troubleshoot/envvars002.html (2认同)