在我们日常使用IDEA进行开发时,可能会遇到许多卡顿的瞬间,明明我们的机器配置也不低啊?为什么就会一直卡顿呢?
原来这是因为IDEA软件在我们安装的时候就设置了默认的内存使用上限(通常很小),这就是造成我们使用IDEA时卡顿的根本原因。
显示IDEA的内存情况:
我们可以通过显示内存使用情况来查看当前项目占用的内存大小。
可以看到当前我的程序占用了427MB的内存,而上限是2048MB(在性能突发时完全承受不住)。我们可以通过进入IDEA的设置来更改这些配置。
配置步骤
1.选择顶部导航栏中的Help,然后点击Edit Custom VM Options(自定义虚拟机内存)。
2.接下来我们将会看到这个界面:
-Xmx1024m // 最大内存上限为:1024MB(1GB)
-Xms256m // 初始内存分配大小为:256MB
-XX:ReservedCodeCacheSize=128m //代码缓冲区大小:128MB
-XX:+UseG1GC
我们对其进行适当的修改(具体根据个人电脑配置),并保存文件:
主要是修改了默认的垃圾回收器,将原来的-XX:+UseConcMarkSweepGC替换为-XX:+UseG1GC,并针对-XX:+UseG1GC进行相关参数配置,之所有会进行替换,是因为Idea官网目前最新的2021.3.2版本就是采用-XX:+UseG1GC。
-server
-Xms4096m
-Xmx2048m
-XX:ReservedCodeCacheSize=1024m
-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
3. 缓存清理(使新配置生效):
选择 File ---> Invalidate Caches(清理无效的缓存)
保持默认的选项,选择确定清理缓存并重启IDEA (结束)。
好了,最后我们来看一下重启之后的IDEA效果
JetBrains系列的产品都可以通过这种设置来解决卡顿的问题。没错,包括PyCharm、Android Studio、WebStorm等,其余参数说明如下:
参数说明:
-server:一定要作为第一个参数,在多个CPU时性能佳
-Xms:初始Heap大小,使用的最小内存,cpu性能高时此值应设的大一些
-Xmx:java heap最大值,使用的最大内存
-XX:PermSize:设定内存的永久保存区域
-XX:MaxPermSize:设定最大内存的永久保存区域
-XX:MaxNewSize:
+XX:AggressiveHeap 使 Xms 失去意义。
-Xss:每个线程的Stack大小
-verbose:gc 现实垃圾收集信息
-Xloggc:gc.log 指定垃圾收集日志文件
-Xmn:young generation的heap大小,一般设置为Xmx的3、4分之一
-XX:+UseParNewGC :缩短minor收集的时间
-XX:+UseConcMarkSweepGC :缩短major收集的时间
-XX:MaxPermSize:设定最大内存的永久保存区域
提示:此选项在Heap Size 比较大而且Major收集时间较长的情况下使用更合适。