IntelliJ IDEA 启动卡顿问题排查与解决

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

发现两个问题

  1. 内存不足 :原配置 -Xmx2048m,但实际使用已超过 3GB
  2. 插件卡顿:阿里云通义灵码 (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" 或 "通义灵码" → 禁用

经验总结

排查思路

  1. 先看系统报告:macOS 的 hang 报告提供了卡顿时的线程堆栈
  2. 分析 IDE 日志idea.log 记录了详细的运行时信息
  3. 逐步排除: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

相关推荐
IT19952 小时前
IDEA+JDK11编译SpringCore5源码及替换项目中的Springcore
java·ide·intellij-idea
南山十一少2 小时前
最新款2025版的IDEA的下载、注册以及进行spring boot 工程和spring cloud工程的搭建和使用
spring boot·spring cloud·intellij-idea
WayneJoon.H2 小时前
2023CISCN deserbug复现
java·安全·web安全·cc链·反序列化
week_泽2 小时前
第8课:LangGraph Memory管理机制与实现方案 - 学习笔记_8
java·笔记·学习·ai agent
装不满的克莱因瓶2 小时前
【cursor】前后端分离项目下的AI跨工程管理方案
java·人工智能·ai·ai编程·cursor·trae·qoder
何中应2 小时前
使用Spring自带的缓存注解维护数据一致性
java·数据库·spring boot·后端·spring·缓存
ZeroToOneDev2 小时前
Mybatis
java·数据库·mybatis
步步为营DotNet2 小时前
深度解读.NET中ConcurrentDictionary:高效线程安全字典的原理与应用
java·安全·.net
a伊雪2 小时前
VSCode 安装通义灵码后左侧菜单栏不显示按钮的问题
ide·vscode·编辑器