小墨の博客

梦想需要付诸行动,否则只能是梦

解决idea启动后CPU飙升的问题

CPU飙升是因为idea产生了某种疯狂消耗CPU资源,可以通过idea自带的监控来来观察到底是什么进程占用了CPU的资源

大部分情况是因为JIT(just in time,即时编译技术)导致CPU飙升。

先说解决方案

QQ截图20230413171138.png

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



以下是分析步骤:

QQ截图20230413171104.png

QQ截图20230413171230.png

# JIT 参数

# 设置用于编译的编译器线程数
-XX:CICompilerCount=2
# 开启分层编译
-XX:TieredStopAtLevel=1
# 控制最大数量嵌套调用内联
-XX:MaxInlineLevel=3
-XX:Tier4MinInvocationThreshold=100000
-XX:Tier4InvocationThreshold=110000
-XX:Tier4CompileThreshold=120000

可以观测到JIT所占用的CPU大幅度下降,说明还是很有效果的。

QQ截图20230413171015.png


后续又发现是因为不断地在进行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

尊重他人劳动成果,共创和谐网络环境。点击版权声明查看本站相关条款。

    发表评论:

    搜索
    本文二维码
    标签列表
    站点信息
    • 文章总数:508
    • 页面总数:20
    • 分类总数:92
    • 标签总数:208
    • 评论总数:61
    • 浏览总数:225323

    | | |
    | |  Z-Blog PHP