直接删除用户配置目录下的 phpstorm64.vmoptions 文件即可恢复:该文件若存在且错误,PhpStorm 将强制加载并导致启动失败;删除后重启即回退至内置默认 JVM 参数运行。

直接删掉自定义的 phpstorm64.vmoptions 文件就行
PhpStorm 启动时,优先读取用户配置目录下的 phpstorm64.vmoptions(Windows/macOS/Linux 64 位),如果这个文件存在且格式错误,IDE 就可能卡在启动界面、闪退,或报 Invalid JVM options 错误。它不会“自动降级”去用安装目录里的默认文件——只要自定义文件存在,就强制加载。
所以最干净的恢复方式就是:关掉 PhpStorm → 找到并删掉那个被你改坏的 phpstorm64.vmoptions → 重启 IDE。它会立刻回退到内置默认 JVM 参数运行。
关键点:
-
phpstorm64.vmoptions的位置不是安装目录的bin/下,而是用户配置目录里,例如:
Windows:C:\Users\{用户名}\AppData\Roaming\JetBrains\PhpStorm202X.X\
macOS:~/Library/Caches/JetBrains/PhpStorm202X.X/
Linux:~/.cache/JetBrains/PhpStorm202X.X/ - 别去动安装目录里的
phpstorm64.vmoptions—— 它是只读模板,更新时会被覆盖,且 macOS 上修改它还会破坏签名导致无法启动 - 删之前可以先重命名备份,比如改成
phpstorm64.vmoptions.broken,方便事后对比
没删错文件但还是启动失败?检查环境变量 PHPSTORM_VM_OPTIONS
如果你设过 PHPSTORM_VM_OPTIONS 环境变量(比如为了统一管理多 IDE 的 JVM 参数),那 PhpStorm 会完全忽略所有本地 .vmoptions 文件,只读这个环境变量指向的路径。这时候删掉配置目录里的文件也没用。
立即学习“PHP免费学习笔记(深入)”;
验证方法:
- Windows:命令行运行
echo %PHPSTORM_VM_OPTIONS% - macOS/Linux:终端运行
echo $PHPSTORM_VM_OPTIONS
如果输出非空,说明它正在生效。临时禁用只需:
- Windows(当前会话):
set PHPSTORM_VM_OPTIONS= - macOS/Linux(当前会话):
unset PHPSTORM_VM_OPTIONS
之后再启动 PhpStorm,就能绕过这个干扰源。
想找回原始默认参数值?别翻安装包,看 Help 菜单
很多人想“对照着修”,结果去解压安装包或查旧文档,其实 PhpStorm 自己就藏着标准答案。
操作路径(无需启动项目):
- 关闭所有 PhpStorm 实例
- 打开 Welcome 屏幕 → 点右下角
Configure→Edit Custom VM Options - 此时 IDE 会自动创建一个空白的
phpstorm64.vmoptions,并打开它 —— 但重点不是编辑,而是看弹窗标题:它会明确写 “Default VM options” 并列出当前版本实际使用的全部默认值,比如-Xms256m -Xmx2048m -XX:ReservedCodeCacheSize=512m等
这些值随版本变化,2021.x 和 2024.x 差距很大。硬背或抄老教程的参数,反而容易因堆内存超限或 GC 策略不兼容引发新问题。
改完 vmoptions 启动变慢或报 OOM?别急着加内存
常见误区:一卡就改 -Xmx,一路加到 4G、6G,结果更卡甚至直接拒绝启动。根本原因常被忽略:
- JVM 堆上限不能超过系统可用物理内存的 50%(尤其 Linux 有 cgroup 限制时)
-
-Xms和-Xmx差距太大(如-Xms128m -Xmx4096m)会导致频繁扩容,GC 压力陡增 - 加了
-XX:+UseG1GC却没配-XX:MaxGCPauseMillis,G1 在小堆上反而不如默认的 GCGC - Ubuntu/Debian 系统默认启用
systemd-oomd,会主动 kill 掉内存突增的进程,和 PhpStorm 形成“抢内存”死循环
稳妥做法:先用默认参数跑稳,再按需微调。比如仅在大型 Laravel 项目中把 -Xmx 从 2048m 提到 2560m,其余不动。改一次,测一次,别堆参数。
真正麻烦的不是参数本身,而是改完后不知道它是否生效、被谁覆盖、有没有副作用。每次调整前确认来源(文件 or 环境变量),改完后用 Help | Diagnostic Tools | Debug Log Settings 开启 JVM 日志,能直接看到最终加载的完整选项列表。


















