解决最新版Idea 在mac上cpu占用超过300%问题

最近在工作中发现idea编辑.java文件时有卡顿显现,百度,谷歌后发现大多数都是指向,配置idea内存和关闭语法检查关闭没用的插件,各种调优配置,本人都试过,发现都无法解决卡顿问题,下面说一下我的解决思路

mac系统:

解决最新版Idea 在mac上cpu占用超过300%问题_第1张图片

idea 版本:解决最新版Idea 在mac上cpu占用超过300%问题_第2张图片

1.使用mac活动监视器发现IDEA进程占用cpu超过400%
2.使用IDEA自带的性能监视器(Help-> Activity Monitor..)发现是compiler JIT 占用cpu
去网了解compiler JIT占用cpu的原因发现如下几点:

1.当codeCache耗尽时,如果codeCache占用内存没有被回收,就会导致编译线程无法继续,并且消耗大量cpu导致系统运行变慢(影响版本在jdk8和jdk7中,不过我用的jdk11不知道存不存在)

考虑这个问题首先就是增加codeCache和codeCache的回收
Help -> Edit Custom VM Options...

-XX:ReservedCodeCacheSize=1024m //增加codeCache容量
-XX:+UseCodeCacheFlushing //codeCache回收

重启idea发现cpu依旧占用严重,那就说明JVM在启动初期解释字节码进行执行,当方法执行次数达到指定阈值后,触发JIT把字节码编译成机器码,这个过程消耗CPU资源比较严重,我直接把所有代码编译成机器码,

Help -> Edit Custom VM Options...

-Xcomp   //可以使jvm运行在纯编译模式下,所有方法在第一次被调用的时候就会被编译成机器代码

这样设置有一个弊端,第一次启动特别慢,之后就特别流畅,作为开发一般我们都不会关闭IDEA,这样这个方法都是可行的.
重启(2分钟左右)  再次编写发现cpu占用没有再400% ,保持在80%左右,至此解决idea卡顿问题,下面是我的配置
 

-Xms1024m
-Xmx1024m
-Xmn350m
-XX:ReservedCodeCacheSize=1024m
-XX:+UseConcMarkSweepGC
-Dfile.encoding=UTF-8
-XX:SoftRefLRUPolicyMSPerMB=50
-ea
-Dsun.io.useCanonCaches=false
-Djava.net.preferIPv4Stack=true
-Djdk.http.auth.tunneling.disabledSchemes=""
-XX:+HeapDumpOnOutOfMemoryError
-XX:-OmitStackTraceInFastThrow
-Xverify:none
-verbose:gc
-XX:+PrintGCDetails
-XX:+PrintGCDateStamps
-XX:MetaspaceSize=1024m
-XX:+UseCodeCacheFlushing
-Xcomp

如果按照这样的配置idea无法启动按照如下修改

方法一

-XX:CompileThreshold=10 //在client下默认1500     在server下10000
-XX:-UseCounterDecay    //关闭热度衰减

-XX:CompileThreshold 这个是方法调用计数器 -XX:CompileThreshold=10 表示方法在被执行10次后编译成机器码,

还需要-XX:-UseCounterDecay 关闭热度衰减,并且去掉

-Xcomp

方法二

-XX:OnStackReplacePercentage=34  //  在client下默认是933  server默认是140

-XX:OnStackReplacePercentage 这是方法回边计数器,当方法执行次数达到公式值后,就会触发编译成机器码

在 client 模式下设置为1

在 server 模式下设置为 34

去掉 -Xcomp 配置

Client模式下回边计数器阈值计算公式:
方法调用计数器阈值(-XX:CompileThreshold)× OSR比率(-XX:OnStackReplacePercentage)/ 100
-XX:OnStackReplacePercentage默认值为933
若都取默认值,计算结果(默认阈值)为13995

Server模式下回边计数器阈值计算公式:
方法调用计数器阈值(-XX:CompileThreshold)×(OSR比率(-XX:OnStackReplacePercentage)- 解释器监控比率(-XX:InterpreterProfilePercentage)/ 100
-XX:OnStackReplacePercentage默认值为140
-XX:InterpreterProfilePercentage默认值为33
若都取默认值,计算结果(默认阈值)为10700
 

你可能感兴趣的:(IDEA,idea,mac)