Java.lang.OutOfMemoryError: 无法创建新的本机线程

4

最近升级到了Android 2.2。

尝试打开一个已有的项目。它提示我进行转换,我接受了。项目成功导入,但每次尝试构建时,都会出现以下错误:

Error:Execution failed for task ':app:mergeDebugResources'. > java.lang.OutOfMemoryError: unable to create new native thread

我已经添加了:

org.gradle.daemon=false
GRADLE_OPTS="-Xmx2048m -Xms2048m -XX:MaxPermSize=1024m"
org.gradle.jvmargs=-XX:MaxPermSize=512m

需要将内容添加到gradle.properties文件中,但是这样做没有起作用。


你有查看过 https://plumbr.eu/outofmemoryerror/unable-to-create-new-native-thread 吗? - Sazzad Hissain Khan
2个回答

4
每当JVM从操作系统请求一个新线程时,你有机会面对 java.lang.OutOfMemoryError: Unable to create new native thread。 当底层操作系统无法分配新的本地线程时,就会抛出此 OutOfMemoryError。 本地线程的确切限制非常依赖于平台,因此我们建议通过运行类似下面示例的测试来找出这些限制。 但是,通常导致 java.lang.OutOfMemoryError: Unable to create new native thread 的情况经历以下阶段:
  1. 应用程序在JVM内部运行时请求新的Java线程
  2. JVM原生代码代理创建新的本地线程的请求到操作系统上。操作系统尝试创建新的本地线程,这需要为线程分配内存。
  3. 操作系统将拒绝本地内存分配,原因可能是32位Java进程大小已耗尽其内存地址空间 - 例如,达到了2-4 GB进程大小限制 - 或操作系统的虚拟内存已完全耗尽。
  4. 抛出 java.lang.OutOfMemoryError: Unable to create new native thread 错误。
参考资料: https://plumbr.eu/outofmemoryerror/unable-to-create-new-native-thread

0
这个帖子中得知,将Gradle版本从2.2.0切换回2.1.3解决了问题。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接