解决PyCharm/IDEA等无法启动,if you already have a 64-bit JDK....Failed to create JVM.JVM path问题

记录一个今天花了一下午的时间,靠各种分析和判断,解决了如题说述的问题(网上其他方法对于我均不奏效)。


在跑深度学习程序时,Pycharm运行时显示内存溢出,弹出了修改内存的窗口,如下图所示:

解决PyCharm/IDEA等无法启动,if you already have a 64-bit JDK....Failed to create JVM.JVM path问题_第1张图片

然后将这三个参数改大了之后不小心点了个shutdown,发现Pycharm居然无法启动了,显示 如下:

Error launching PyCharm

lf you already have a 64-bit JDK installed, define a JAVA_HOME variable inComputer > System Properties > System Settings > Environment Variables.

Failed to create JVM.JVM Path: XXXXX

看这个意思,仿佛是环境变量JAVA_HOME出了问题,导致创建JVM虚拟机失败,程序无法启动(注意,因为Pycharm是基于Java语言开发的,所以Pycharm启动和Java虚拟机有关系,报错和Java有关系就很正常了)

但是,我们很容易产生怀疑,环境变量我们一般不会去动它,也没有新装任何程序对其进行改动,按理说JAVA_HOME不会出问题的,经检查,我的JAVA_HOME确实没动过。

此外,Google上和国内CSDN上已经有很多这方面的文章,但都没有对原因做具体分析,因此很难对症下药,对我遇到的情况全都不起效。


那么到底是什么原因呢?实际上,我们可以打开安装目录下的bin目录,例如我的是在:

D:\Software\PyCharm\PyCharm 2021.1.1\bin

我们可以看到该目录下存在一个叫做pycharm.bat的文件:

解决PyCharm/IDEA等无法启动,if you already have a 64-bit JDK....Failed to create JVM.JVM path问题_第2张图片

 这个文件就是启动Pycharm时运行的脚本。

我们在地址栏里直接输入cmd回车,即可打开控制台直接进入到当前目录。

解决PyCharm/IDEA等无法启动,if you already have a 64-bit JDK....Failed to create JVM.JVM path问题_第3张图片

然后输入 .\pycharm.bat 即可手动运行这个脚本。

我们可以看到,其实真正的错误原因,是 ReservedCodecacheSize(保留代码缓存)这个参数,要求的最大值只能是2048M,也就是2个G,而我们之前改动了这个参数,改成了4个G,因为这个值设的太大,无法创建太大的虚拟机,所以导致JVM创建失败,最终导致了我们程序无法运行,Pycharm打不开。(这里不得不吐槽Pycahrm的开发人员也不在用户当时设置这个参数的时候就警告或者做个阈值限制,非要允许你设置一个大的值然后就无法启动)

不管怎样,至此,错误的原因好歹是找到了。


于是,我们很容易就能想到,Pycharm启动的时候需要读取配置文件,先读到这个参数(ReservedCodecacheSize)的大小,我们只要修改配置文件里的这个参数即可。

首先,通过Pycharm官网查询,Pycharm的配置文件名为固定的,pycharm64.exe.Vmoptions 这个文件,我们刚才安装目录的那个文件夹下就有这个文件,然而一般Pycharm启动时查询的配置文件并不是安装目录下的这个pycharm64.exe.Vmoptions,而是在C盘。

对于老版的Pycharm如2019.2,一般是在这个目录下:

C:\Users\用户名\.PyCharm版本\config\pycharm64.exe.vmoptions

而对于新版的Pycharm(一般2021以上的版本),是在这个目录下:

C:\Users\用户名\AppData\Roaming\JetBrains\PyCharm版本

例如我的就是在这个目录下面:

C:\Users\33038\AppData\Roaming\JetBrains\PyCharm2021.1

我们可以看到这里也有个pycharm64.exe.Vmoptions文件

解决PyCharm/IDEA等无法启动,if you already have a 64-bit JDK....Failed to create JVM.JVM path问题_第4张图片

 一般情况下,这个就是Pycharm启动的配置文件,用记事本打开该文件,

解决PyCharm/IDEA等无法启动,if you already have a 64-bit JDK....Failed to create JVM.JVM path问题_第5张图片

 将其中的ReservedCodeCacheSize这个参数的值改成小于等于2048M的值即可,另外,如果上面的Xms和Xmx两个参数如果过大的话,也可以适当改小。具体文件内容可参考:

-Xms128m
-Xmx750m
-XX:ReservedCodeCacheSize=240m
-XX:+UseG1GC
-XX:SoftRefLRUPolicyMSPerMB=50
-XX:CICompilerCount=2
-XX:+HeapDumpOnOutOfMemoryError
-XX:-OmitStackTraceInFastThrow
-ea
-Dsun.io.useCanonCaches=false
-Djdk.http.auth.tunneling.disabledSchemes=""
-Djdk.attach.allowAttachSelf=true
-Djdk.module.illegalAccess.silent=true
-Dkotlinx.coroutines.debug=off

但是,问题又来了,虽然一般情况下改这个配置文件问题就得以解决了。但我遇到的情况是,改这个配置文件也没用,在命令行像刚才一样继续执行一次pacharm.bat,可以明确的看到,这个参数还是设置成了4096M,也就是说,改动了这个文件没起作用。Pycharm启动的时候还是读取到了4096M这个数值,那么我们又很自然而然的能想到,一定存在另一个这样的配置文件,Pycharm启动的时候读到了其他的这样一个配置文件,而不是读取的我们之前这两个文件夹里的。

但是,怎么找到这个文件呢,其实有个傻瓜式的做法就是,根据pycharm64.exe.Vmoptions这个名字或者.Vmoptions这个后缀进行全盘搜索,管它C盘D盘,只要是这个文件就全部打开检查一遍,但这显然显示不出咱计算机人的专业性(狗头)。

于是又想到了刚才的那个安装目录里的pycharm.bat文件,既然启动Pycharm就需要运行这个脚本,那么配置文件的路径自然也应该写在这个脚本文件里面。于是我们打开它:

解决PyCharm/IDEA等无法启动,if you already have a 64-bit JDK....Failed to create JVM.JVM path问题_第6张图片

 在里面搜索刚才的Vmoptions这个关键字,可以发现很多相关的语句。

 解决PyCharm/IDEA等无法启动,if you already have a 64-bit JDK....Failed to create JVM.JVM path问题_第7张图片

 然后我们发现,它们都和"%VM_OPTIONS_FILE%"这个环境变量有关。

解决PyCharm/IDEA等无法启动,if you already have a 64-bit JDK....Failed to create JVM.JVM path问题_第8张图片

 于是我们打开电脑系统属性的环境变量:

 果然存在这个环境变量,而指向的位置,则是D盘另一个文件,文件名也pycharm.vmoptions,至此,答案终于水落石出,实际上Pycahrm启动时读取的配置文件正是这个环境变量指向的文件,然后像前面提到的,打开这里的这个文件,将其中ReservedCodeCacheSize这个参数的值改成小于等于2048M的值,问题就得以完美解决。

你可能感兴趣的:(#,Java问题处理,软件安装,java,pycharm)