IDEA/WebStorm 本质:基于 JetBrains Runtime (JBR) 的 Java 应用,性能高度依赖 JVM 参数。
常见卡顿原因:
默认堆内存过小,项目一大就频繁 GC。
Code Cache 不足,导致 JIT 编译受限。
CICompilerCount 太低,多核 CPU 没有被充分利用。
GC 策略不适合长时间运行的 IDE。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
-Xmx1500m -Xms128m -XX:ReservedCodeCacheSize=512m -XX:+HeapDumpOnOutOfMemoryError -XX:-OmitStackTraceInFastThrow -XX:CICompilerCount=2 -XX:+IgnoreUnrecognizedVMOptions -XX:+UnlockDiagnosticVMOptions -XX:TieredOldPercentage=100000 -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 -Djdk.nio.maxCachedBufferSize=2097152 -Djava.util.zip.use.nio.for.zip.file.access=true -Dkotlinx.coroutines.debug=off |
堆内存 (-Xmx/-Xms):最大 1.5G,初始仅 128M,扩容频繁。
Code Cache:512M,勉强够用,但大型项目容易溢出。
CICompilerCount=2:只用两个编译线程,现代 CPU 资源浪费。
GC 策略:未指定,默认 Parallel GC,停顿时间较长。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
-Xmx16g -Xms4g -XX:JbrShrinkingGcMaxHeapFreeRatio=40 -XX:ReservedCodeCacheSize=1024m -XX:+HeapDumpOnOutOfMemoryError -XX:-OmitStackTraceInFastThrow -XX:CICompilerCount=4 -XX:+IgnoreUnrecognizedVMOptions -XX:+UnlockDiagnosticVMOptions -XX:TieredOldPercentage=100000 -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 -Djdk.nio.maxCachedBufferSize=2097152 -Djava.util.zip.use.nio.for.zip.file.access=true -Dkotlinx.coroutines.debug=off -XX:+UseG1GC -XX:SoftRefLRUPolicyMSPerMB=50 -XX:MaxMetaspaceSize=2048m -XX:+AlwaysPreTouch -XX:MaxGCPauseMillis=500 -XX:InitiatingHeapOccupancyPercent=30 -XX:G1ReservePercent=15 -XX:+ParallelRefProcEnabled -XX:+UnlockExperimentalVMOptions |
内存分配
-Xmx16g -Xms4g:大幅提升堆内存,减少扩容开销。适合 32G+ 内存机器。
GC 策略
-XX:+UseG1GC:更适合大堆内存,停顿更可控。
-XX:MaxGCPauseMillis=500:目标停顿时间 500ms,提升交互流畅度。
-XX:InitiatingHeapOccupancyPercent=30:更早触发并发 GC,避免 Full GC。
Code Cache
-XX:ReservedCodeCacheSize=1024m:双倍提升,减少 JIT 编译受限。
编译线程
-XX:CICompilerCount=4:利用更多 CPU 核心,加快字节码编译。
元空间
-XX:MaxMetaspaceSize=2048m:防止类加载过多导致 OOM。
预触发内存
-XX:+AlwaysPreTouch:启动时预分配内存,减少运行中缺页中断。
软引用回收
-XX:SoftRefLRUPolicyMSPerMB=50:更积极回收软引用,避免内存膨胀。
内存大小要结合机器配置:
16G 内存电脑:-Xmx8g -Xms2g 更稳妥。
32G+ 内存电脑:可以用 -Xmx16g。
GC 策略推荐 G1GC,但如果项目特别大,可以尝试 ZGC(JDK 17+)。
调优不是一劳永逸,需要结合项目规模、插件数量、操作习惯不断调整。
通过合理调整 JVM 启动参数,可以显著改善 IDEA/WebStorm 的卡顿问题。核心优化方向是:
增大堆内存,减少 GC 压力。
优化 GC 策略,降低停顿时间。
提升 Code Cache 和编译线程数,加快代码分析与提示。