http://blog.csdn.net/mxbin2008/article/details/21155255
一、问题描述
1、系统环境:XP32位系统,JKD1.7
2、启动Idea报错:failed to create jvm error code -4 , 无法正常启动。
二、解决步骤
(一)办法一:
1、修改文件:<安装目录>\JetBrains\IntelliJ IDEA 13.0.2\bin\idea64.exe.vmoptions
(1)-XX:MaxPermSize=750m -->256m 或者删除该行。 结果:问题仍然存在。
(二)方法二:
1、我的系统为32位,故修改文件:<安装目录>\JetBrains\IntelliJ IDEA 13.0.2\bin\idea.exe.vmoptions
-XX:MaxPermSize=256m -->156m。 结果:问题解决。
三、参考资料
引用自:http://www.oschina.net/question/615783_146506
This Windows specific problem can occur if Java Virtual Machine can't allocate the specified amount of memory in a single continuous chunk when you start the IDE.
Recent IDE versions with the new launcher fail with this error instead: Failed to create JVM: error code -4.
IDE runs in 32-bit mode by default which limits the total amount of process memory that can be addressed to 2GB on most Windows versions.
Even if the maximum heap size (-Xmx) is set to just 512m, you can still observe this problem for the following reasons:
- Heap size is not the total memory limit, the value of -XX:PermSize is also added to this number, plus stack size for every thread, plus memory mapped files, plus internal JVM memory for the JIT compiler and other needs. All these factors make it easy to get close or exceed the 2GB value.
- Even if total memory doesn't exceed the OS limit, JVM requires all the heap memory to be continuous. There might be no such chunk available in the address space to fit in the heap.
- Address space fragmentation can heavily limit the maximum heap size that can be used. Your system may have a lot of different application installed and running. Some applications inject DLLs into the address space of other processes leading to fragmentation. Use the DLLs view (Ctrl+D) in theProcess Explorer to find out what apps injected their hooks into the IDE process. Some common dynamic libraries that you can observe: TortoiseOverlays.dll, mdnsNSP.dll, DropboxExt.dll. The more third-party libraries you see there, the higher is the chance that the address space will get fragmented and you will get this error even with low heap values.
- IDE .exe launcher can itself cause additional fragmentation, we are using a third-party tool for this launcher and do not have full control over it, but in the future updates we'll migrate to our own launcher that should reduce the fragmentation.
Solutions
- Reduce -Xmx and -XX:PermSize values in IDE_HOME\bin\<product>.exe.vmoptions file, try to do it step by step reducing by 100m every time until it starts. Refer to the Configuring JVM options and platform properties for details.
- Start in 64-bit mode, for example IntelliJ IDEA provides idea64.exe launcher that will use 64-bit JDK found in the registry (you have to install it separately).
- Start the IDE using <product>.bat file instead of the .exe (also useful if 64-bit executable is not provided for your product).
- .bat script will use 32-bit JDK by default (from the .\jre directory), you can override it with the environment variable pointing to the 64-bit JDK installation home, the variable would depend on the product: IDEA_JDK for IntelliJ IDEA, WEBIDE_JDK for PhpStorm and WebStorm, PYCHARM_JDK for PyCharm, RUBYMINE_SDK for RubyMine. See Selecting the JDK version the IDE will run under for more details.
- Reduce the number of applications fragmenting the process address space by uninstalling those you don't use.