前几天要合并一下代码,Pycharm index代码文件非常慢,很影响工作效率。于是便准备加一下pycharm的heap大小。
google了一下,Edit Custom VM Options修改了 /home/zh/.PyCharm2019.1/config/pycharm64.vmoptions文件,但是很奇怪怎么尝试都不行。我怀疑是不是版本的bug问题。
于是我翻出我的Mac,上面安装了老版本2018.01,同样操作一遍,正常work。
我在Ubuntu上下载了一下Pycharm2018.01,改了一下设置,果然work。虽然老一点,但能解决问题就好,之前的flow也从来没有依赖过2019.01版本的新增功能。
但是这只是表象问题,真正的问题还没暴露出来。
我关闭新安装的Pycharm2018,重新启动,发现起来的依然是Pycharm2019。显然这个是因为图标关联的启动命令是之前的Pycharm2019。
于是vim .local/share/applications/jetbrains-pycharm.desktop准备修改这个desktop文件,设置如下:
[Desktop Entry]
.....
Icon=jetbrains-pycharm
Exec=/home/zh/pycharm-2019.1.3/jre64/bin/java -classpath /home/zh/pycharm-2019.1.3/lib/bootstrap.jar:/home/zh/pycharm-2019.1.3/lib/extensions.jar:/home/zh/pycharm-2019.1.3/lib/util.jar:/home/zh/pycharm-2019.1.3/lib/jdom.jar:/home/zh/pycharm-2019.1.3/lib/log4j.jar:/home/zh/pycharm-2019.1.3/lib/trove4j.jar:/home/zh/pycharm-2019.1.3/lib/jna.jar -Xms1024m -Xmx4096m -XX:MaxMetaspaceSize=1024m -XX:ReservedCodeCacheSize=1024m -XX:+UseConcMarkSweepGC -XX:SoftRefLRUPolicyMSPerMB=50 -ea -Dsun.io.useCanonCaches=false -Djava.net.preferIPv4Stack=true -Djdk.http.auth.tunneling.disabledSchemes="" -XX:+HeapDumpOnOutOfMemoryError -XX:-OmitStackTraceInFastThrow -Dawt.useSystemAAFontSettings=lcd -Dsun.java2d.renderer=sun.java2d.marlin.MarlinRenderingEngine -Dsun.tools.attach.tmp.only=true -XX:ErrorFile=/home/zh/java_error_in_PYCHARM_%p.log -XX:HeapDumpPath=/home/zh/java_error_in_PYCHARM.hprof -Didea.paths.selector=PyCharm2019.1 -Djb.vmOptionsFile=/home/zh/.PyCharm2019.1/config/pycharm64.vmoptions -Didea.platform.prefix=Python com.intellij.idea.Main
......
看到的瞬间我就知道什么原因了,原来根源在这里,图标关联的根本不是./pycharm-2019.1.3/bin/pycharm.sh命令,而是启动Pycharm java进程的命令,相关的Xmx被写死到了desktop文件中。
当第一次启动并且save和锁定图标的时候,当时的配置就被写死进去,即使后面改了vmoptions文件。不走./pycharm-2019.1.3/bin/pycharm.sh也完全不会format出新的启动命令,自然怎么改配置都没用了。
至于为什么我之前的操作能够work?
Mac上面的图标启动机制暂时不清楚,但我估计安装的时候应该关联的是正确的启动命令,这是能work的原因。而Ubuntu上,我安装Pycharm2018.01之后都是通过命令行跑./pycharm-2018.1.6/bin/pycharm.sh起来的,没锁定过图标启动,自然也能work。
解决办法:
1、直接改.local/share/applications/jetbrains-pycharm.desktop。
2、修改/home/zh/.PyCharm2019.1/config/pycharm64.vmoptions,每次修改删除.local/share/applications/jetbrains-pycharm.desktop
3、改掉.local/share/applications/jetbrains-pycharm.desktop中的Exec项,指向./pycharm-2019.1.3/bin/pycharm.sh。