必须彻底退出 PhpStorm 进程再重启,而非仅清缓存;正确路径是 Help → Edit Custom VM Options 修改用户级配置;验证需查看 Help → About 中的 JVM options 或 Memory Indicator;-Xms/-Xmx 应按物理内存合理设置并启用 -XX:+UseG1GC。

改了phpstorm64.vmoptions但没生效?重启方式错了
改完文件后点 Invalidate Caches and Restart 或只重载项目,-Xms/-Xmx 依然不生效——因为 JVM 参数在进程启动时就锁死,清缓存不等于重启 JVM 进程。
必须彻底退出 PhpStorm(macOS 上检查 Dock 图标是否还在;Windows 上任务管理器确认 phpstorm64.exe 进程已结束),再手动双击图标或命令行启动。用 Toolbox 管理的,改完配置后右上角有明确的「Restart」按钮,别漏点。
验证是否真生效:Help → About → 查看 “JVM options” 行;或右下角状态栏右键 → Memory Indicator,上限值应与你设的 -Xmx 一致。
写错路径、选错文件,90% 的内存设置白忙活
直接去安装目录 /opt/phpstorm/bin/ 下改 phpstorm64.vmoptions 是高危操作:升级会覆盖,权限可能受限,且 Toolbox 或 snap 安装根本不用这个路径。
立即学习“PHP免费学习笔记(深入)”;
正确做法永远是:PhpStorm 启动后,Help → Edit Custom VM Options。它会自动打开用户级配置路径,比如:
- macOS:
~/Library/Caches/JetBrains/PhpStorm2023.3/phpstorm64.vmoptions - Windows:
%APPDATA%\JetBrains\PhpStorm2023.3\phpstorm64.exe.vmoptions - Linux(Toolbox):
~/.cache/JetBrains/Toolbox/apps/PhpStorm/ch-0/phpstorm64.vmoptions
如果看到启动日志里有 Picked up _JAVA_OPTIONS,说明系统环境变量干扰了,删掉 ~/.bashrc 或 /etc/profile 里的 _JAVA_OPTIONS 导出语句。
堆大小不是越大越好,乱设反而更卡
-Xms 和 -Xmx 设得过大,会挤占系统内存,触发 swap,IDE 反而响应迟钝;设得太小(默认 -Xmx512m),开两个 Laravel 项目就频繁 GC,补全延迟、索引卡住。
推荐组合(物理内存为基准):
- 8GB 内存机器:
-Xms1024m -Xmx2048m - 16GB+ 且专用于开发:
-Xms2048m -Xmx4096m,但绝不超过物理内存的 70% - 必须加
-XX:+UseG1GC:G1 垃圾回收器比 Parallel GC 更适合交互式 IDE,能明显减少卡顿 - 顺手加
-XX:ReservedCodeCacheSize=512m,防插件多时 JIT 缓存溢出 - 删掉
-XX:MaxPermSize:PhpStorm 2021.3+ 已用 Metaspace,写上直接报错
忽略 inotify 耗尽,内存调再大也白搭
Linux/macOS 下,node_modules、vendor 这类目录单个就几万文件,不 exclude 就会吃光 inotify 句柄。默认系统上限仅 8192,症状不是“慢”,而是“卡死”:停在“正在扫描文件”、右键菜单无响应、文件修改不刷新。
两步必须做:
- 在项目中右键
node_modules→ Mark Directory as → Excluded;同理处理vendor、dist、build - 终端执行:
echo 524288 | sudo tee /proc/sys/fs/inotify/max_user_watches,并写入/etc/sysctl.conf永久生效
别指望 .gitignore 自动生效——PhpStorm 不读它来控制索引范围;也别只 exclude 目录却不调 inotify 上限,两者缺一不可。


















