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

时间:2016-10-02 07:39:21

标签: java android out-of-memory

最近更新到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。不过,它还没有奏效。

2 个答案:

答案 0 :(得分:4)

每当JVM从操作系统请求新线程时,您都有机会面对java.lang.OutOfMemoryError: Unable to create new native thread。只要底层操作系统无法分配新的本机线程,就会抛出此OutOfMemoryError。本机线程的确切限制非常依赖于平台,因此我们建议通过运行类似于以下示例的测试来找出这些限制。但是,一般而言,导致java.lang.OutOfMemoryError: Unable to create new native thread的情况会经历以下阶段:

  1. 在其中运行的应用程序请求新的Java线程 JVM
  2. JVM本机代码代理创建新本机的请求 线程到操作系统操作系统尝试创建一个新的本机线程 需要将内存分配给线程
  3. 操作系统会拒绝 本机内存分配要么是因为32位Java进程大小 耗尽了其内存地址空间 - 例如(2-4)GB流程大小 限制已被命中 - 或操作系统的虚拟内存已完全 耗尽
  4. java.lang.OutOfMemoryError:无法创建新的本机 抛出线程错误。
  5. 参考:https://plumbr.eu/outofmemoryerror/unable-to-create-new-native-thread

答案 1 :(得分:0)

  

从2.2.0切换回gradle 2.1.3修复了问题。

来自this thread