IntelliJ IDEA 启动卡顿问题排查与解决
本文记录了一次 IntelliJ IDEA 2025.2 在 MacBook Pro M3 Pro 上启动卡顿的完整排查过程。
环境信息
| 项目 | 配置 |
|---|---|
| 设备 | MacBook Pro (Mac15,6) |
| 芯片 | Apple M3 Pro (11核: 5性能核 + 6效率核) |
| 内存 | 18 GB |
| 系统 | macOS 26.2 |
| IDE | IntelliJ IDEA CE 2025.2.6 |
问题现象
IDEA 启动后出现以下症状:
- 界面可以打开,但编辑器区域显示加载转圈图标
- 底部状态栏没有显示索引进度
- 整个 IDE 无响应,持续卡顿 9+ 秒
- 系统报告
hang事件
排查过程
第一步:分析系统 Hang 报告
通过系统生成的错误报告,发现关键信息:
Event: hang
Duration: 9.40s
Footprint: 3041.35 MB ← 内存占用约 3GB
Heaviest stack (主线程卡在这里):
GenCollectedHeap::mem_allocate_work ← 内存分配
Mutex::lock(Thread*) ← 等待 GC 锁
__psynch_mutexwait ← 线程阻塞
初步判断:主线程在进行内存分配时,因 GC 持有锁而阻塞。
第二步:尝试优化 JVM 参数(失败)
尝试了以下优化方案,均导致问题加剧:
| 尝试 | 修改内容 | 结果 |
|---|---|---|
| 方案1 | SerialGC → G1GC + AlwaysPreTouch | 启动更慢 |
| 方案2 | 仅改 G1GC | 仍然卡住 |
| 方案3 | 保持 SerialGC,增加 Xmx | 仍然卡住 |
结论:问题不仅仅是 JVM 参数配置。
第三步:清理缓存(无效)
bash
rm -rf ~/Library/Caches/JetBrains/IdeaIC2025.2 # 清理 2.4GB 缓存
清理后重启,问题依旧。
第四步:分析 IDEA 实时日志(找到根因)
查看 ~/Library/Logs/JetBrains/IdeaIC2025.2/idea.log:
log
# 每 2-3 秒触发一次低内存警告
INFO - LowMemoryWatcher - Low memory signal received: afterGc=false
INFO - LowMemoryWatcher - Low memory signal received: afterGc=false
...
# 通义灵码插件网络超时
INFO - CosyHeartbeatRunner - cosy start ping heart beat
WARN - CosyHeartbeatRunner - cosy ping timeout in heartbeat
发现两个问题:
- 内存不足 :原配置
-Xmx2048m,但实际使用已超过 3GB - 插件卡顿:阿里云通义灵码 (Cosy) 插件网络请求超时,阻塞主线程
问题根因
┌─────────────────────────────────────────────────────────────┐
│ 问题根因分析 │
├─────────────────────────────────────────────────────────────┤
│ 1. 内存配置不足 (Xmx=2GB < 实际需求 3GB+) │
│ ↓ │
│ 2. 频繁触发 GC (SerialGC 单线程 Stop-The-World) │
│ ↓ │
│ 3. 通义灵码插件在主线程执行网络请求 │
│ ↓ │
│ 4. 网络超时 + GC 阻塞 = IDE 完全卡死 │
└─────────────────────────────────────────────────────────────┘
解决方案
1. 增加 JVM 内存配置
修改 ~/Library/Application Support/JetBrains/IdeaIC2025.2/idea.vmoptions:
diff
- -Xms1024m
- -Xmx2048m
+ -Xms2048m
+ -Xmx4096m
完整配置:
-Xms2048m
-Xmx4096m
-XX:+UseSerialGC
-XX:ReservedCodeCacheSize=512m
-XX:SoftRefLRUPolicyMSPerMB=50
-XX:CICompilerCount=2
-XX:+HeapDumpOnOutOfMemoryError
-XX:-OmitStackTraceInFastThrow
-XX:+IgnoreUnrecognizedVMOptions
-ea
-Dsun.io.useCanonCaches=false
-Dsun.java2d.metal=true
-Djbr.catch.SIGABRT=true
-Djdk.http.auth.tunneling.disabledSchemes=""
-Djdk.attach.allowAttachSelf=true
-Djdk.module.illegalAccess.silent=true
-Dkotlinx.coroutines.debug=off
-Dapple.awt.application.appearance=system
2. 禁用问题插件
Settings → Plugins → Installed → 搜索 "cosy" 或 "通义灵码" → 禁用
经验总结
排查思路
- 先看系统报告:macOS 的 hang 报告提供了卡顿时的线程堆栈
- 分析 IDE 日志 :
idea.log记录了详细的运行时信息 - 逐步排除:JVM 参数 → 缓存 → 插件
避坑指南
| 误区 | 正确做法 |
|---|---|
| 盲目修改 GC 收集器 | JetBrains 选用 SerialGC 是经过测试的,不要轻易改动 |
| 只看内存占用 | 需要结合 GC 日志分析是否频繁触发 |
| 忽略插件影响 | 第三方插件可能在主线程执行阻塞操作 |
推荐配置(18GB RAM 设备)
-Xms2048m # 初始堆 2GB
-Xmx4096m # 最大堆 4GB(不超过物理内存的 1/4)
相关文件位置
| 文件 | 路径 |
|---|---|
| VM 配置 | ~/Library/Application Support/JetBrains/IdeaIC2025.2/idea.vmoptions |
| IDE 日志 | ~/Library/Logs/JetBrains/IdeaIC2025.2/idea.log |
| 缓存目录 | ~/Library/Caches/JetBrains/IdeaIC2025.2/ |
排查日期:2026-01-13