当前位置: 首页 > 知识库问答 >
问题:

Android Studio2.0预览8与gradle插件2.0.0-alhpa8,内存警告,尽管堆大小为4Gb

闻人和歌
2023-03-14

我刚刚更新到Android Studio版本2.0预览版8和gradle插件2.0.0-alpha8。我注意到,现在有一个警告,以防堆空间不够大,无法进行分拆。

正如他们在适当的页面上所说(http://tools.android.com/recent)

在2.0中。0-alpha8我们为此添加了一些自动诊断:如果构建过程太小,我们将切换回内存不足的索引,并发出构建警告,解释如何增大Gradle守护程序的大小。(我们还在为alpha8之后的下一个版本进行一些额外的相关改进。)

当我开始构建我的项目时,我遇到了以下错误:

要在进程中运行dex,Gradle守护html" target="_blank">进程需要一个更大的堆。它目前有3641 MB。若要更快地生成,请将Gradle守护进程的最大堆大小增加到超过4g,如dexOptions.javaMaxHeapsize中所述。为此,将org.gradle.jvmargs=-Xmx4g设置为项目中dexOptions.javaMaxHeapsize中指定的gradle.properties.有关详细信息,请参阅https://docs.gradle.org/current/userguide/build_environment.html

事实上,我连续收到很多这样的照片。这让我很惊讶,因为这就是我在毕业典礼上看到的。属性文件(在我的项目主目录中)

ANDROID_BUILD_TARGET_SDK_VERSION=23
ANDROID_BUILD_TOOLS_VERSION=23
ANDROID_BUILD_SDK_VERSION=23
ANDROID_BUILD_MIN_SDK_VERSION=16
org.gradle.jvmargs=-Xmx4g -XX:MaxPermSize=4096m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8

另外,在构建中。我的主要模块的渐变,我把

android {
    dexOptions {
        incremental true
        javaMaxHeapSize "4g"
    }
}

所以我不明白builder/dexer/compiler从哪里得到3641MB的值。

构建速度非常慢

我禁用了instant run,现在速度更快了。构建时间为48-50秒。我仍然会犯同样的错误,但只是一次,而不是多次。

我在Linux,我的uLimited-a如下:

core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 31483
max locked memory       (kbytes, -l) 64
max memory size         (kbytes, -m) unlimited
open files                      (-n) 1024
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 8192
cpu time               (seconds, -t) unlimited
max user processes              (-u) 31483
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

还有,这是我的工作室。vmoptions文件:https://gist.github.com/MarKco/1ae7918daf867a378a2f我想这是未经编辑的。我可以定制一个,但我不知道它在哪里。

共有1个答案

亢保赫
2023-03-14

我已经解决了,至少看起来是这样。在发布问题之前,我所做的最后一次更改如下:

我有

ANDROID_BUILD_TARGET_SDK_VERSION=22
ANDROID_BUILD_TOOLS_VERSION=22
ANDROID_BUILD_SDK_VERSION=22
ANDROID_BUILD_MIN_SDK_VERSION=16
org.gradle.jvmargs=-Xmx4g -XX:MaxPermSize=4096m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8

我把它改成了

ANDROID_BUILD_TARGET_SDK_VERSION=23
ANDROID_BUILD_TOOLS_VERSION=23
ANDROID_BUILD_SDK_VERSION=23
ANDROID_BUILD_MIN_SDK_VERSION=16
org.gradle.jvmargs=-Xmx4g -XX:MaxPermSize=4096m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8

我不知道为什么它没有自动更改,因为很长一段时间以来我一直使用23作为目标版本。不管怎么说,在我从22岁改到23岁之后,我还没有很好的构建,但这似乎是因为gradle同步仍在后台运行。我终止了所有的gradle项目,保留了23版而不是22版,禁用了即时运行,并执行了新的同步。起初,我一直在说“要在进程中运行dex,Gradle守护进程需要一个更大的堆。”错误,只有一次,不会像以前那样重复。但是一次又一次的构建我看到构建时间越来越短,直到我得到了10秒的构建。我想问题已经解决了。至少我希望如此。

最后,我根据Henry所说的更改了MaxPermSize,现在我的配置

ANDROID_BUILD_TARGET_SDK_VERSION=23
ANDROID_BUILD_TOOLS_VERSION=23
ANDROID_BUILD_SDK_VERSION=23
ANDROID_BUILD_MIN_SDK_VERSION=16
org.gradle.jvmargs=-Xmx4g -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
 类似资料:
  • 问题内容: 我正在使用Proguard缩小代码。我的策略是启用它,然后按照警告进行操作以保留其抱怨的内容。如果有外部库,我尝试遵循作者提供的Proguard说明。许多指令都包含一个标志。如果禁用该标志,则会收到警告。如果我们通过标志保留大多数类,为什么仍会发出警告?例: 问题答案: ProGuard中有许多警告,它们的含义不同。这个特别的一个: 意味着ProGuard在处理类A时遇到了对类B的引用

  • 我正在尝试运行artisan make:controller。 我有一个问题: 我试图增加

  • 上面链接中的代码正在工作,但可以传输到一定数量的数据。当我试图传输一个大小约为334 MB的.mkv格式的电影时,它给出了“内存不足,java堆大小”的错误。我是一个乞丐,我不知道如何解决这个问题,我试图在客户端程序中增加缓冲区大小,但问题仍然存在。请帮帮我.

  • 我有并且有函数,此函数返回视图名称。 此视图包含大量详细信息,通常会有10到15组(行)详细信息显示在页面上(详细信息来自使用table的数据库)。 它的工作正常,但在某些情况下,当用户详细信息去30到35套(行),我得到下面的错误在error_log文件 PHP致命错误:允许内存大小为33554432字节耗尽(尝试分配5896720字节)在 /laravel/framework/src/Illu

  • 我有以下代码: 不同的文件: 由于我编写了Mail()函数,因此出现以下错误: 致命错误:允许的内存大小134217728字节已用尽(尝试分配65488字节)

  • 我试图使用Maven LiquiBase插件生成changeLog文件。这是我的pom文件 警告1。我尝试运行“MVN验证”。因为我有目标liquiBase:GenerateChangelog绑定validate阶段。它不应该生成changeLog文件吗?构建成功,但我得到一个警告“由于Maven配置,跳过了LiquiBase”。 警告2。我尝试使用“MVN编译”。因为这一步是在validate之