关于 jetbrains-vmoptions
用于审查 JetBrains IDE VM 选项的技能。它先确认实际运行时与目标进程,再依据证据提出最小改动,并提供验证和回滚步骤。
主要功能
- 01识别运行时与目标进程
- 02依据性能证据进行诊断
- 03核实特定版本的选项支持
- 04提出最小选项改动
- 05验证生效值并提供回滚
适用场景
- 01调查 IDE 卡顿或 CPU 占用高
- 02分析堆内存或垃圾回收问题
- 03区分 IDE 与构建进程的问题
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ buyoung/ skills --skill jetbrains-vmoptions安装后在 Claude Code 中输入/jetbrains-vmoptions确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/common-options.mdgc-options.mdmemory-options.mdperformance-validation.mdprerequisite-check.md详细介绍
JetBrains IDE VM 选项
首先分析正在运行的 IDE,然后提出最小且有依据的 .vmoptions 差异。不要创建或编辑用户的文件。JVM 接受某个标志只能作为兼容性证据,不能证明它能提升性能。
工作流程
1. 确认运行时和基线
阅读 prerequisite-check.md。识别 IDE 产品和构建版本、实际启动运行时的厂商/版本/构建版本/路径、它是捆绑运行时还是自定义运行时、操作系统、架构、当前生效的命令行和标志、当前自定义选项,以及出现问题的进程。
IDE 构建号仅供参考,不能证明当前启用的是哪个运行时。项目 SDK/JDK 不是 IDE 启动运行时。
如果无法获取确切的运行时信息,请提供收集说明,并将回答限制在诊断或与运行时无关的更改。不要根据 IDE 版本推断未经确认的 JBR 主版本。
2. 确认进程边界
判断问题属于本地 IDE 进程、远程 IDE 后端、Gradle 守护进程、构建进程、测试 JVM、语言服务器、终端进程,还是其他子进程。IDE .vmoptions 只影响应用了该文件的 IDE 进程。
将范围外的进程调优引导至该进程自己的配置。绝不要声称调整 IDE 堆或 GC 能解决 Gradle 或测试 JVM 的问题。
3. 先诊断,再选择选项
对观察到的证据进行分类,不要把某种症状直接对应到 GC:
| 证据 | 首要调查方向 | 相关参考资料 |
|---|---|---|
| IDE 冻结或 UI 卡顿 | 线程转储或 IDE CPU 分析;与 GC/安全点数据进行关联 | common-options.md |
| CPU 占用高或编辑缓慢 | 可重复的 IDE CPU 分析 | performance-validation.md |
| OOM、内存不足警告或堆饱和 | 堆使用趋势、GC 后占用量、分配速率 | memory-options.md |
| GC 暂停时间长或频繁 | 在 IDE 进程上记录 GC 日志或 JFR | gc-options.md |
| 启动或索引缓慢 | 在受控的缓存条件下分别分析启动和索引 | performance-validation.md |
如果缺少证据,请说明如何收集。单凭冻结现象不足以证明问题由垃圾收集器导致。
4. 为每项版本敏感的说法提供依据
对于每项拟议选项,记录其适用的确切运行时系列和构建版本,并区分:
- 源码声明值:特定 JBR/OpenJDK 源码修订版中声明的值或可用性;
- 运行时选定值:用户正在运行的 JVM 报告的启发式选项值或初始化值;
- IDE 捆绑值:产品随附或自定义
.vmoptions文件提供的选项。
优先使用正在运行的 IDE 的 jcmd VM.command_line 和 VM.flags -all 输出,以确定生效值。引用源码声明时,链接到匹配的 JBR 版本、修订版和文件。如果运行时启发式机制可能改变最终值,不要将源码初始值说成最终值。
5. 提出最小变更
仅阅读与已诊断原因相关的参考资料:
| 文件 | 用途 |
|---|---|
| gc-options.md | 垃圾回收器兼容性、选择冲突、实测 GC 延迟 |
| memory-options.md | 堆、代码缓存、元空间、引用、原生内存的权衡 |
| common-options.md | 编译器、字符串、线程、诊断、进程边界 |
| performance-validation.md | 应用检查和受控 A/B 对比 |
默认提供相对于已确认当前设置的添加/更改/移除清单。保留与问题无关的 IDE 提供选项和用户属性。按语义键去除重复项(例如,多个 -Xmx 形式或垃圾回收器选择器),并说明哪个有效值会生效或发生冲突。
每次只建议一个目的的变更。不要将固定的大堆、-Xms = -Xmx、降低编译层级,或强制设置编译器/垃圾回收器线程数作为通用优化。说明支持这些设置的已观察条件及其成本。
6. 包含应用、验证和回滚
告知用户使用产品的 Help | Edit Custom VM Options 操作,或使用已确认的确切覆盖来源。不要建议编辑安装目录中的默认文件。
重启后,使用 jcmd <pid> VM.command_line 和 jcmd <pid> VM.flags -all 验证同一个 IDE 进程。确认请求的值、所选垃圾回收器,以及任何被忽略、已过时、未激活或被覆盖的标志。JVM 启动成功本身并不足以证明设置有效。
提供回滚方法,以恢复已记录的基线,或仅移除建议的变更。性能相关的说法应遵循 performance-validation.md。
输出要求
除非用户明确要求提供完整文件,否则返回:
- 已确认的环境 — IDE、实际启动运行时/构建版本/路径、捆绑或自定义状态、操作系统/架构、目标进程,以及未知项。
- 证据与诊断 — 观察结果、可能原因、其他可能性,以及与版本相关事实的来源。
- 建议的变更 — 要添加、更改或移除的选项,以及原因、适用条件和权衡。如果证据不足以支持变更,应说明“暂不更改 VM 选项”。
- 应用与验证 — 设置的准确位置、是否需要重启,以及有效值检查方法。
- 回滚 — 如何恢复已记录的基线。
- 前后对比 — 目标指标和受控 A/B 流程,或相关步骤的链接。
如果用户要求完整配置,首先要求提供当前有效选项/原始选项,保留 IDE 必需选项,仅标注有意修改之处,并另外提供变更清单。
兼容性与证据边界
- 仅在确认实际运行时主版本和构建版本后,讨论 JBR 17、21 和 25。
- 未确认或其他运行时版本均视为未知;不要用最接近的受支持版本近似处理。
- 推荐平台和构建版本相关的标志前,先对照确切的运行时二进制文件验证。
- 区分选项是否可识别、是否已激活,以及是否实测带来改进。
- 如果某个 JBR 构建中缺少某个垃圾回收器或诊断功能,应予以说明。
- 如果仅能检查 JBR 25.0.4 的源代码/默认值,应说明其他构建版本或性能结果尚未验证。
范围
此技能针对 JetBrains IDE 进程提供分析、建议文本、验证命令和测量流程。它不会更改 IDE 设置、运行基准测试、调整无关的 JVM 进程,也不保证性能提升。