Cordova无法为2097152KB对象堆保留足够的空间

时间:2016-12-19 06:32:10

标签: java android cordova

我是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

9 个答案:

答案 0 :(得分:87)

增加Java VM(?)内存大小后再试一次。

以下是如何在Windows平台上修复它:

转到开始 - >控制面板 - >系统 - >高级(标签) - >环境变量 - >系统变量 - >新:
变量名称:_JAVA_OPTIONS
变量值:-Xmx512M

不要忽略分数并强调字符。

答案 1 :(得分:10)

我遇到了完全相同的问题。我按照here中的建议切换到使用64位JDK,它运行正常。我在Windows 10上使用Ionic 3.5.0。

答案 2 :(得分:1)

args.push('-Dorg.gradle.jvmargs=-Xmx2048m') 
into 
args.push('-Dorg.gradle.jvmargs=-Xmx1024m');

在以下位置文件上。

  1. 项目文件夹\平台\ android \ cordova \ lib \ builders \ GradleBuilder.js

  2. 项目文件夹\平台\ android \ cordova \ lib \ builders \ StudioBuilder.js

答案 3 :(得分:1)

args.push('-Dorg.gradle.jvmargs=-Xmx2048m') 
 to  
args.push('-Dorg.gradle.jvmargs=-Xmx1024m');

在以下位置文件上。

  1. project-folder \ platforms \ android \ cordova \ lib \ builders \ builders.js
  2. project-folder \ platforms \ android \ cordova \ lib \ builders \ GradleBuilder.js
  3. project-folder \ platforms \ android \ cordova \ lib \ builders \ StudioBuilder.js

答案 4 :(得分:0)

像@kemal的解决方案一样在系统级别设置环境变量将设置系统中所有JVM应用程序的内存大小,这不是大多数人想要做的。

相反,请在您的cordova gradlebuilder属性文件中设置堆大小。

args.push('-Dorg.gradle.jvmargs=-Xmx2048m');

答案 5 :(得分:0)

转到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路径。

答案 6 :(得分:0)

我遇到了同样的问题。

无论如何,以下是解决方法: 转到“开始”->“控制面板”->“系统”->“高级(选项卡)”->“环境变量”->“系统变量”->“新建”: 变量名称:_JAVA_OPTIONS

变量值:-Xmx512M

如果512无法正常工作,则将其更改为。

变量值:-Xmx1024M

还要更改路径。

变量名称:路径

变量值:; C:\ Program Files \ Java \ jre6 \ bin; F:\ JDK \ bin;

将此更改为合适的路径。

答案 7 :(得分:0)

转到:\ 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',

答案 8 :(得分:0)

这适用于我的离子应用程序。

更改

// 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

谢谢