CPU飙升是因为idea产生了某种疯狂消耗CPU资源,可以通过idea自带的监控来来观察到底是什么进程占用了CPU的资源
大部分情况是因为JIT(just in time,即时编译技术)导致CPU飙升。
先说解决方案
Custom VM Options 中添加如下内容
# ---------- # 修改堆大小 # ---------- # -Xms128m # -Xmx1024m -Xms2048m -Xmx2048m # ---------- # JIT 参数 # ---------- # 设置用于编译的编译器线程数 -XX:CICompilerCount=2 # 开启分层编译 -XX:TieredStopAtLevel=1 # 控制最大数量嵌套调用内联 -XX:MaxInlineLevel=3 -XX:Tier4MinInvocationThreshold=100000 -XX:Tier4InvocationThreshold=110000 -XX:Tier4CompileThreshold=120000
以下是分析步骤:
# JIT 参数 # 设置用于编译的编译器线程数 -XX:CICompilerCount=2 # 开启分层编译 -XX:TieredStopAtLevel=1 # 控制最大数量嵌套调用内联 -XX:MaxInlineLevel=3 -XX:Tier4MinInvocationThreshold=100000 -XX:Tier4InvocationThreshold=110000 -XX:Tier4CompileThreshold=120000
可以观测到JIT所占用的CPU大幅度下降,说明还是很有效果的。
后续又发现是因为不断地在进行GC导致CPU飙升,因为每次GC都会消耗99%的CPU资源,于是想着修改JVM参数来解决这个问题。
因为我的idea是新装的,他的堆大小参数为:
-Xms128m -Xmx1024m
然后查阅资料得知,当Xms设置值比较小时,会频繁的触发GC,而GC又会出现STW的情况,所以idea一直GC,那你的idea也必然是一卡一卡的,同时大部分都推荐相同值,这是为什么呢?
这是为了避免在由于heap内存扩大或缩小导致应用停顿,降低延迟,同时避免每次垃圾回收完成后JVM重新分配内存。
所以修改后的堆的大小为:
-Xms2048m -Xmx2048m
如果以上操作还是不能解决CPU过高的话,还可以打开
1、打开idea设置 File–>Settings–> Build,Execution,Deployment --> Compiler
2、调整 Shared build process heap size(Mbytes) 大小,默认值700,可修改至 1024(或者自定义数值)
至于网上还有提出的插件,或者代码检查我们也可以去尝试一下,通过修改里面的配置结合idea自带的监控来快速准确定位问题,但是也告诉我们,要对症下药,有自带的工具去帮你,何乐而不为呢?
参考:https://blog.csdn.net/xlj_bear/article/details/125875680
本站文章除注明转载/出处外,均为原创,若要转载请务必注明出处。转载后请将转载链接通过邮件告知我站,谢谢合作。本站邮箱:admin@only4.work
尊重他人劳动成果,共创和谐网络环境。点击版权声明查看本站相关条款。