亲测有效:CPU 从300%降到60%
配置文件位置
idea -> Help -> Edit Custom VM options
具体参数配置
#堆栈设置 -Xms4096m -Xmx4096m -Xmn3072m -XX:MetaspaceSize=1024m -XX:MaxMetaspaceSize=1024m -XX:+AlwaysPreTouch -XX:InitialCodeCacheSize=1200m -XX:ReservedCodeCacheSize=1200m -XX:+UseCompressedOops -Dfile.encoding=UTF-8 # 采用何种垃圾回收参数 -XX:+UseConcMarkSweepGC -XX:ParallelGCThreads=4 -XX:SoftRefLRUPolicyMSPerMB=50 -ea # JIT 参数 -XX:CICompilerCount=2 -XX:TieredStopAtLevel=1 -XX:MaxInlineLevel=3 -XX:Tier4MinInvocationThreshold=100000 -XX:Tier4InvocationThreshold=110000 -XX:Tier4CompileThreshold=120000 -Dsun.io.useCanonPrefixCache=false -Djava.net.preferIPv4Stack=true -Djdk.http.auth.tunneling.disabledSchemes="" -XX:+HeapDumpOnOutOfMemoryError -XX:-OmitStackTraceInFastThrow -Djdk.attach.allowAttachSelf -Xverify:none -XX:ErrorFile=$USER_HOME/java_error_in_idea_%p.log -XX:HeapDumpPath=$USER_HOME/java_error_in_idea.hprof
配置后重新启动idea
其实大部分情况下 不是垃圾回收造成的cpu负载过高 而是由于JIT Compiler 及时编译将class文件编译成本地机器代码占用了大量的cpu资源导致的卡顿
配置文件中这部分是控制 JIT compiler
-XX:CICompilerCount=2 -XX:TieredStopAtLevel=1 -XX:MaxInlineLevel=3 -XX:Tier4MinInvocationThreshold=100000 -XX:Tier4InvocationThreshold=110000 -XX:Tier4CompileThreshold=120000
最后希望大家自己打开自己的jvisualVM来查看到底是什么导致了自己的idea卡顿的
顺便说一下
oracle-jdk 自带 jvisualVM
open-jdk 没有的jvisualVM需要自己下载 https://www.jianshu.com/p/ac72a14afc24