idea卡顿和占用高怎么办??
背景
最近闲的时候看了看一个交流群,发现佬友在交流关于 idea 卡顿的问题,并且提出了一些具体方案。
前置知识
众所周知,idea 是用 java 写的,运行的 JDK 是 JetBrains Runtime,java 这语言性能本身肯定是不能和 go 和 rust 相提并论的,而且在 idea 这么丰富的功能下,很难避免卡顿和内存占用高。
TIP
JetBrains Runtime (JBR) 是 JetBrains 公司维护的一个 OpenJDK 的分支(fork)。简单来说,它是一个为 JetBrains 旗下所有桌面产品(如 IntelliJ IDEA, PyCharm, WebStorm 等)量身定制和优化的 Java 运行环境 (JRE/JDK)。修复了各种已知的 OpenJDK 和 Oracle JDK 错误,并提供了更好的性能和稳定性。该版本目前最新的是 JDK 21。
解决方案
1. 提高 idea 最大堆内存(加钱)
在主菜单中,前往「帮助」,可以发现一个类似「更改最大堆内存」的选项,或者可以改 idea 的虚拟机参数。如果你的内存足够大,你可以尝试这个选项来减缓卡顿现象。
2. 更改垃圾回收器为 ZGC
在你的 idea 的虚拟机参数上加上:
-XX:+UseZGC // 使用 ZGC
-XX:+ZGenerational // 启动分代 ZGC,JDK 21 才引入的,但是我们的 idea 最新的 JDK 刚好是 JDK 21
TIP
ZGC 是一款由 Oracle 开发的、可伸缩的、低延迟的垃圾回收器。它的设计目标只有一个,也是它最引以为傲的特点:无论你的 Java 堆内存有多大(从几百 MB 到十几 TB),它的「Stop-The-World」(STW) 暂停时间都能稳定地控制在 1 毫秒以下。
3. 尝试更换 JDK
是的,你没听错,idea 是允许你更换 JDK 的。意思是你可以不使用 JetBrains Runtime,你可以直接更换到 JDK 24 甚至是 JDK 25,并开启 紧凑对象头:
-XX:UseCompactObjectHeaders
它可以大大减少 idea 的内存占用。
WARNING
但是嘛,这方案有一些缺点,因为 idea 是因为 JetBrains Runtime 才能完美渲染自己的 UI 和字体,你如果更换的话,UI 和字体的体验会大大打折扣。可能还会遇到其他的问题(我刚换的时候,发现 UI 和字体让我很不舒服,我就立马换回来了)。
📝 参考
参考文献:https://www.jetbrains.com/zh-cn/help/idea/switching-boot-jdk.html
