2017-08-03 85 views
2

我有一个启动java项目的gradle任务。基本上是这样的:Gradle:增加由gradle运行启动的java进程的堆大小任务

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堆大小。

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

+3

这是不可能的,而无需修改'build.gradle'脚本。 – Opal

+1

如果你放宽你对'build.gradle'的要求,你可以在这里找到很好的解决方案:https://stackoverflow.com/questions/23689054/problems-passing-system-properties-and-parameters-when-running-java-class -via-gr –

+0

感谢提示charlie_pl,但是从我的理解,这篇文章是关于程序参数,而不是JVM参数。或者我错过了什么? –

回答

2

As @Opal上面的状态是不可能

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

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