运行 通过带有 -Xmx 和 -Xms 的 gradlew 申请

Run application via gradlew with -Xmx and -Xms

我有申请。我 运行 它通过

gradlew run-app

或调试

gradlew debug-app

有效。如何将“-Xmx”参数传递到我 运行(调试)的应用程序中? 是否可以在不编辑 build.gradle 文件的情况下这样做?

我找到了这个 Gradle unknown command-line option '-X'

我尝试时遇到类似的错误

gradlew debug-app -Xmx2000m

错误

FAILURE: Build failed with an exception.

* What went wrong:
Problem configuring task :debug-app from command line.
> Unknown command-line option '-X'.

我试图在 GRADLE_USER_HOME 目录中创建一个文件 gradle.properties(默认情况下,它是 USER_HOME/.gradle)。

org.gradle.jvmargs=-XX\:MaxHeapSize\=4256m -Xmx4256m -Xms2000m

我也尝试在项目文件夹 gradle.propertiesorg.gradle.jvmargs=-Xmx2000m

甚至当我 运行 一个应用程序时,我看到提交的内存大小 < 520 MiB

这是我 运行 它作为一个普通的 Java 应用程序

在第二种情况下,当我 运行 将应用程序作为普通 Java 应用程序使用 -Xms、-Xmx 时,提交的内存大小约为 3.5 GiB,因为我通过了 -Xmx4512m -Xms2512m参数。

将此添加到您的 gradle.properties 文件中:

org.gradle.jvmargs=-Xmx2000m

来自here

org.gradle.jvmargs

Specifies the jvmargs used for the daemon process. The setting is particularly useful for tweaking memory settings. At the moment the default settings are pretty generous with regards to memory.

编辑:我的回答是 gradle 守护程序 jvm,而不是应用程序 jvm。你必须使用 jvmArgs property

The extra arguments to use to launch the JVM for the process. Does not include system properties and the minimum/maximum heap size.

首先,感谢@ToYonos 带领我走向正确的方向。

其次,我在这里找到了解决方案。 我从命令行 运行 我的应用程序。

set GRADLE_OPTS=-Xms1724m -Xmx5048m
gradlew debug-app

请注意,CMD Windows 命令 SET 在本地工作,因此如果您关闭终端,将不会设置 GRADLE_OPTS。对于 Linux,您可以使用

export GRADLE_OPTS=WHATEVER

这就是我想要实现的。

使用 application 插件可以使用 applicationDefaultJvmArgs 属性

apply plugin: 'application'    
applicationDefaultJvmArgs = ["-Xms1024m", "-Xmx2048m"]

参数将应用于 运行 任务并启动您的应用程序脚本

more info

在我的例子中,使缓存无效并重新启动 android studio(它会自动重新启动)然后在重新启动 android studio

后错误将消失

然后