android - 连线内存不足:ffmpeg 库的 Java 堆空间错误
问题描述
那么这是我得到的错误:
Out of memory: Java heap space.
Please assign more memory to Gradle in the project's gradle.properties file.
For example, the following line, in the gradle.properties file, sets the maximum Java heap size to 1,024 MB:
<em>org.gradle.jvmargs=-Xmx1024m</em>
这是因为:
implementation 'nl.bravobit:android-ffmpeg:1.1.7'
当我删除错误消失了。嗯,错误是说将堆大小增加到 1024MB,我确实将它增加到 10GB,它仍然无法工作。这就是有线的。
org.gradle.jvmargs=-Xmx10000m
仍然得到同样的错误。也试过这个:
<application
android:largeHeap="true">
仍然没有机会。请不要建议使用替代库,因为我不能。
解决方案
在 gradle 5 中,他们大大降低了默认内存要求。
命令行客户端现在以 64MB 堆而不是 1GB 开始。这可能会影响使用 --no-daemon 模式直接在客户端 VM 内运行的构建。我们不鼓励使用 --no-daemon,但如果必须使用它,可以使用 GRADLE_OPTS 环境变量增加可用内存。
Gradle 守护程序现在以 512MB 堆而不是 1GB 开始。大型项目可能必须使用 org.gradle.jvmargs 属性来增加此设置。
所有工作人员,包括编译器和测试执行程序,现在都从 512MB 堆开始。以前的默认值是物理内存的 1/4。大型项目可能必须在相关任务上增加此设置,例如 JavaCompile 或 Test。
增加客户端内存
GRADLE_OPTS=-Xmx1g ./gradlew build
增加守护进程内存
./gradlew -D org.gradle.jvmargs=-Xmx1g
更新:
为了进一步说明,gradle 使用客户端 VM、守护进程 VM、工作 VM(并行运行时)以及用于某些任务的附加 VM。
可以使用GRADLE_OPTS环境变量自定义客户端 VM。
可以使用org.gradle.jvmargs属性自定义守护程序 VM。
工作虚拟机是从守护程序虚拟机派生的,因此将使用相同的设置。
可以通过任务自定义每个任务的虚拟机。例如_
tasks.withType(JavaCompile) { options.compilerArgs += ['-Xdoclint:none', '-Xlint:none', '-nowarn'] }
根据有关客户端 VM 使用的 gradle 文档:
客户端 VM 仅处理命令行输入/输出,因此很少需要更改其 VM 选项。
推荐阅读
- ios - iPhone自动化测试
- java - Google Speech-to-Text API - 安卓应用程序崩溃
- javascript - 如何在 js 数据表中查找和更新特定记录
- java - Android:由于 transformDexArchiveWithExternalLibsDexMergerForDebug 程序类型已经存在,Java 库构建失败
- python - 如何使用 Apache Libcloud 在 Amazon S3 上列出给定密钥中的所有内容?
- python - PhraseMatcher 在尝试标记文档中的多个项目时返回空列表
- java - 在序列图中,你能编出你计划在未来实现的功能的名称吗?
- uml - UML 用例图 - 框架作为参与者?
- machine-learning - 如何获得一个良好的二元分类深度神经模型,其中负数据更多位于数据集上?
- saml - 如何正确关联 Gatling 中的 SAML 标头响应