问题描述
大多数人都知道使用idea时,发现idea内存消耗比较严重,尤其开启了idea后,CPU占比可以直接飙升到100%(这主要体现在刚启动的时候),系统的内存高达80%以上,甚至风扇呼呼作响,于是开始找各种解决方案。目前,就我个人电脑来说,开机后,系统内存有23%左右,此时没有开启任何软件。
个人电脑配置
调整之后
开启idea之前,内存使用情况,内存有27%左右
开启idea之后,内存使用情况,暂未运行项目,内存有39%左右
idea同时运行4个微服务项目,内存有60%左右
当然,以上是调整之后的结果! 没有调整之前真的达到了80%以上了!!!
调整后配置如下,仅供参考
在 idea的帮助里面,选择 编译自定义 vm 选项调整 gc 算法或其他
-server
-Xms610m
-Xmx2g
-XX:ReservedCodeCacheSize=512m
-XX:+UseG1GC
-XX:+UseStringDeduplication
-XX:MaxGCPauseMillis=200
-XX:InitiatingHeapOccupancyPercent=85
-XX:G1HeapRegionSize=26
-XX:SoftRefLRUPolicyMSPerMB=50
-ea
-XX:CICompilerCount=6
-Dsun.io.useCanonPrefixCache=false
-Djdk.http.auth.tunneling.disabledSchemes=""
-XX:+HeapDumpOnOutOfMemoryError
-XX:-OmitStackTraceInFastThrow
-Djdk.attach.allowAttachSelf=true
-Dkotlinx.coroutines.debug=off
-Djdk.module.illegalAccess.silent=true
-Dfile.encoding=UTF-8
idea 2020.1.1 默认配置
-Xms128m
-Xmx750m
-XX:ReservedCodeCacheSize=240m
-XX:+UseConcMarkSweepGC
-XX:SoftRefLRUPolicyMSPerMB=50
-ea
-XX:CICompilerCount=2
-Dsun.io.useCanonPrefixCache=false
-Djdk.http.auth.tunneling.disabledSchemes=""
-XX:+HeapDumpOnOutOfMemoryError
-XX:-OmitStackTraceInFastThrow
-Djdk.attach.allowAttachSelf=true
-Dkotlinx.coroutines.debug=off
-Djdk.module.illegalAccess.silent=true
主要是修改了默认的垃圾回收器,将原来的-XX:+UseConcMarkSweepGC替换为-XX:+UseG1GC,并针对-XX:+UseG1GC进行相关参数配置,之所有会进行替换,是因为Idea官网目前最新的2021.3.2版本就是采用-XX:+UseG1GC。
至于相关配置参数的含义可以自行查阅相关文档。