Cordova 无法为 2097152KB 对象堆保留足够的空间
Posted
技术标签:
【中文标题】Cordova 无法为 2097152KB 对象堆保留足够的空间【英文标题】:Cordova Could not reserve enough space for 2097152KB object heap 【发布时间】:2017-05-04 04:05:05 【问题描述】:我是 cordova 的新手,正在尝试创建一个 android HelloWold 项目。
当我使用cordova platforms add android
时,它会抛出一些异常:
D:\CordovaSpace\helloWorld>cordova platforms add android
Adding android project...
Creating Cordova project for the Android platform:
Path: platforms\android
Package: com.example.helloworld
Name: HelloWorld
Activity: MainActivity
Android target: android-24
Subproject Path: CordovaLib
Android project created with cordova-android@6.0.0
Installing "cordova-plugin-whitelist" for android
ANDROID_HOME=D:\Java_Android_SDK\android_sdk
JAVA_HOME=C:\Program Files (x86)\Java\jdk1.8.0_73
Subproject Path: CordovaLib
Starting a new Gradle Daemon for this build (subsequent builds will be faster).
FAILURE: Build failed with an exception.
* What went wrong:
Unable to start the daemon process.
This problem might be caused by incorrect configuration of the daemon.
For example, an unrecognized jvm option is used.
Please refer to the user guide chapter on the daemon at https://docs.gradle.org/2.14.1/userguide/gradle_daemon.html
Please read the following process output to find out more:
-----------------------
Error occurred during initialization of VM
Could not reserve enough space for 2097152KB object heap
* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.
Failed to install 'cordova-plugin-whitelist':Error: cmd: Command failed with exit code 1
at ChildProcess.whenDone (D:\CordovaSpace\helloWorld\platforms\android\cordova\node_modules\cordova-common\src\superspawn.js:169:23)
at emitTwo (events.js:106:13)
at ChildProcess.emit (events.js:191:7)
at maybeClose (internal/child_process.js:850:16)
at Process.ChildProcess._handle.onexit (internal/child_process.js:215:5)
Error: cmd: Command failed with exit code 1
【问题讨论】:
我们可以再给你一些内存吗? 我认为你缺少 2 GB 内存 那我该怎么办? (请原谅我英语说得不太好) 购买更多内存?你现在有多少? @ScaryWombat 很容易被讽刺!我的系统有 9Gb 的可用内存,但我仍然遇到同样的问题。 【参考方案1】:增加 Java VM(?) 内存大小后重试。
这是在 Windows 平台上修复它的方法:
转到开始 -> 控制面板 -> 系统 -> 高级(选项卡) -> 环境变量 -> 系统变量 -> 新建:
变量名:_JAVA_OPTIONS
变量值:-Xmx512M
不要忽略分数和下划线字符。
【讨论】:
添加本地或用户环境变量 _JAVA_OPTIONS 也可以。 source ? 这对我来说就像一个魅力,但在重新启动cli
之后。
像魅力一样工作!
这对我有用,但在那之后,我无法再打开 Eclipse。【参考方案2】:
我遇到了完全相同的问题。我按照here 中的建议切换到使用 64 位 JDK,它运行良好。我在 Windows 10 上使用 Ionic 3.5.0。
【讨论】:
【参考方案3】:args.push('-Dorg.gradle.jvmargs=-Xmx2048m')
into
args.push('-Dorg.gradle.jvmargs=-Xmx1024m');
在以下位置文件上。
项目文件夹\平台\android\cordova\lib\builders\GradleBuilder.js
项目文件夹\平台\android\cordova\lib\builders\StudioBuilder.js
【讨论】:
【参考方案4】:这适用于我的 ionic 应用程序。
换行
// to allow dex in process
'org.gradle.jvmargs': '-Xmx1024m',
来自
// to allow dex in process
'org.gradle.jvmargs': '-Xmx2048m',
在你的
<app path>\platforms\android\cordova\lib\config
谢谢
【讨论】:
谢谢,你的回答解决了我的问题,我被困了3天。我应用了许多不同的东西。但忽略您的答案,因为分数较低。谢谢【参考方案5】:转到:\platforms\android\cordova\lib\config\GradlePropertiesParser.js
constructor (platformDir)
this._defaults =
// 10 seconds -> 6 seconds
'org.gradle.daemon': 'true',
// to allow dex in process
'org.gradle.jvmargs': '-Xmx2048m',
// allow NDK to be used - required by Gradle 1.5 plugin
'android.useDeprecatedNdk': 'true'
// Shaves another 100ms, but produces a "try at own risk" warning. Not worth it (yet):
// 'org.gradle.parallel': 'true'
;
并将'org.gradle.jvmargs': '-Xmx2048m',
更改为'org.gradle.jvmargs': '-Xmx1024m',
【讨论】:
【参考方案6】:args.push('-Dorg.gradle.jvmargs=-Xmx2048m')
to
args.push('-Dorg.gradle.jvmargs=-Xmx1024m');
在以下位置文件上。
-
项目文件夹\platforms\android\cordova\lib\builders\builders.js
项目文件夹\platforms\android\cordova\lib\builders\GradleBuilder.js
项目文件夹\平台\android\cordova\lib\builders\StudioBuilder.js
【讨论】:
【参考方案7】:转到Start -> Control Panel -> System -> Advanced(tab) -> Environment Variables -> System Variables
添加/更改JAVA_HOME
值
from C:\Program Files (x86)\Java\jdk1.8.0_192
to C:\Program Files\Java\jdk1.8.0_192
即从Program Files (x86)
路径更改为Program Files
路径。
【讨论】:
如果没有64位版本,请安装。 以上评论解决了我的问题。 Java_Home 指向 32 位版本。 很高兴知道它有帮助。【参考方案8】:我遇到了同样的问题。
无论如何,这里是如何解决它: 转到开始->控制面板->系统->高级(选项卡)->环境变量->系统变量->新建: 变量名:_JAVA_OPTIONS
变量值:-Xmx512M
如果 512 不起作用,则将其更改为。
变量值:-Xmx1024M
还有改变路径。
变量名:路径
变量值:;C:\Program Files\Java\jre6\bin;F:\JDK\bin;
将此更改为您的适当路径。
【讨论】:
【参考方案9】:像@kemal 的解决方案一样在系统级别设置环境变量将为系统中的所有 JVM 应用程序设置内存大小,这不是大多数人想要做的。
改为在您的 cordova gradlebuilder 属性文件中设置堆大小。
args.push('-Dorg.gradle.jvmargs=-Xmx2048m');
【讨论】:
你的意思是project/platforms/android/build.gradle
?以上是关于Cordova 无法为 2097152KB 对象堆保留足够的空间的主要内容,如果未能解决你的问题,请参考以下文章
Error occurred during initialization of VM Could not reserve enough space for 2097152KB object heap(
Android:java.lang.OutOfMemoryError:无法分配 23970828 字节分配,2097152 空闲字节和 2MB 直到 OOM