记一次Idea 内存消耗严重,CPU资源占比严重的彻底解决方案

问题描述

从使用idea2017版开始,突然有天发现idea内存消耗比较严重,尤其开启了tomcat后,过一段时间,idea的运行内存会被吃满,最近还发现编辑代码,提交代码,CPU占比可以直接飙升到100%,风扇呼呼作响,于是开始找各种解决方案。

解决方案:

1、卸载多余不常用的插件;
2、设置某些idea配置,比如去掉某些动画、编译检查什么的;
3、调整idea.vm.properties中的jvm大小。

方案说明

1、卸载插件:此方案具体要看卸载的什么插件,如果没有找到那个真正消耗资源的元凶插件,优化效果基本无效。在很长的时间中,我也怀疑是某个插件消耗了CPU,最后通过网友的提示,通过Idea 自带的监控功能–Help/Activity Monitor,发现CPU打满的时候,插件Alibaba 的代码规范检查插件占有CPU最高,于是禁用再去测试,发现后面的代码编辑和提交CPU都保持正常的水平了;
2、调整idea的设置:这个方案只能减轻运行压力,基本没什么效果;
3、调整idea 的运行内存:此方案没有解决本质问题,只能暂时解决,而且撑下去的时间不会太长,举例来说,我曾经设置了6g的内存,但还是很快就会被吃掉。

最终方案

在网上搜索方案的时候,一直发现有人提到,idea卡顿的本质原因是因为idea的运行jre环境,与项目的编译环境不相同,比如idea2019版已经默认使用了自己idea封装的jre11版本,而我的项目中使用的是官方的jdk1.8版本,但是一直没有找到怎么去替换idea默认的jre环境,旧版的idea自身通过Switch Boot SDK 功能可以切换,但是新版的idea中已经不提供这个功能了,所以需要用另一种方案,安装idea的插件–choose runtime。
记一次Idea 内存消耗严重,CPU资源占比严重的彻底解决方案_第1张图片
choose runtime 安装后(2020版本之前的idea可能需要重启),之后去Help/Find Action,搜索 “choose runtime”,之后打开这个选项。
记一次Idea 内存消耗严重,CPU资源占比严重的彻底解决方案_第2张图片记一次Idea 内存消耗严重,CPU资源占比严重的彻底解决方案_第3张图片
这时候idea 就会开始检测可以设置的jre环境,这个搜索加载会比较耗时,大家要耐心一点。
记一次Idea 内存消耗严重,CPU资源占比严重的彻底解决方案_第4张图片
之后会出来好多的jre版本替换选项,一定要选择自己安装的官方版本的jre,之后重启idea,大功告成!
记一次Idea 内存消耗严重,CPU资源占比严重的彻底解决方案_第5张图片

验证效果

在idea 的About中,可以看到idea当前依赖的运行环境(Runtime version),已经变成了刚才指定的官方jre版本。
之后可以打开项目与tomcat,进行效果测试了,经过我的测试,本地环境下,jvm占用不会超过1g,基本都是维持在600-700m,哪怕在多开一个idae窗口去运行tomcat,也不会到1g的内存使用,这时候可以把idea.vm的最大jvm运行内存调整到2g了,发现依然不卡顿。
记一次Idea 内存消耗严重,CPU资源占比严重的彻底解决方案_第6张图片

idea.vm 配置信息参考

-Xms1g
-Xmx2g
-XX:ReservedCodeCacheSize=256m
-XX:+UseConcMarkSweepGC
-XX:SoftRefLRUPolicyMSPerMB=128
-ea
-XX:CICompilerCount=2
-Dsun.io.useCanonPrefixCache=false
-Djava.net.preferIPv4Stack=true
-Djdk.http.auth.tunneling.disabledSchemes=""
-XX:+HeapDumpOnOutOfMemoryError
-XX:-OmitStackTraceInFastThrow
-Djdk.attach.allowAttachSelf=true
-Dkotlinx.coroutines.debug=off
-Djdk.module.illegalAccess.silent=true
-XX:+UseCompressedOops
-Dfile.encoding=UTF-8
-XX:ErrorFile=$USER_HOME/java_error_in_idea_%p.log
-XX:HeapDumpPath=$USER_HOME/java_error_in_idea.hprof

tomcat jvm配置信息参考

-Dfile.encoding=UTF-8

tomcat jvm大小缺省配置就可以了。

你可能感兴趣的:(工具,intellij,idea)