原文: https://blog.csdn.net/qq_27093465/article/details/52918873
idea 有个配置文件,可以设置内存大小的,就跟咱的 jvm 的内存里面的堆大小,栈大小等等,可以设置的,而且设置了之后,你这个的性能就会得到提升。具体看下面怎么修改。
先说所要修改的文件 idea.vmoptions 的位置,这个不同的平台,估计名称可能有些差别。mac 的如下图
具体怎么找到这个地方的,刚刚使用 mac 的估计不会,老手就会啦,
option + cmd + P 隐藏或显示 “访达” 窗口中的路径栏
这个就是显示我上图的地步的那个路径,然后你就可以像 Windows 那样点点点到这个位置啦。
这个是 idea 的 17 版本的配置文件里面的信息,默认的设置这么简单,就这么几个。
说明:
1.Xms128m, 最小内存
2.Xmx750m, 最大内存
3. 预留代码缓存的大小
4.UseConcMarkSweepGC, 设置年老代为并发收集
默认值设置的太小啦,所以,你使用 idea 跑稍微大点的项目,你的电脑就会像拖拉机一样,嗡嗡嗡的响,哎哟我新买的 macpro 啊,启动个多模块的 maven 项目,就跟拖拉机似的,开始响啦,搞得同桌笑我买的是不是真的啊。尴尬啦。
修改后的配置
因为我电脑是 16g 的内存,现在 8g 算是标配吧,最小一个 g,最大 2 个 g。下面的代码缓存也给一个 g。
修改的地方,就修改啦这么三个地方,至于为啥设置 2 个 g 最大,因为我看啦一篇文章,他做过测试啦,你设置的再大就浪费啦,但是系统默认的 750m 也太小了,项目大的话,分分钟就卡啦,这就跟 jvm 的内存设置似的,太大的话也不好,太小的话也不好。找个平衡的设置,是不错的。
设置完成之后,需要重启一下 idea,然后就会看到下面的变化。注意右下角。
这个地方怎么弄出来?
新增更新:idea 升级之后,目前是 2021.2 版本,这个控制内存使用显示状态的地方换了,具体看下图。
在我没修改之前,这地方是 750m 的现在修改之后就成 2 个 g 啦,现在跑原来呢个嗡嗡嗡响的项目,现在也不响啦,电脑也不发烫啦。
有老铁问,内存 8g 的怎么着,我也不确定啊。我这放 2 张图。
这个是 16g 内存的电脑的内存使用实时图,可以看出来内存压力很小的,基本上也就是四分之一。
这个是 8g 内存的电脑的内存实时使用图,可以看出来内存压力也不大。也就差不多百分之五十吧。
解释一下:
不要看这 2 张图,一个 16g 的内存,但是已经使用了 12 个 g 啦,但是 8 个内存的电脑也已经使用了 6.6,约等于 7 吧。这么看的话,内存使用率基本上都是百分之八九十的样子。
这个是正常的现象,因为内存本来就是给用的,你要是空着一大部分都不使用的话,不就浪费啦吗,所以,这个内存的使用率,不会因为你刚刚的那个配置而变化吧,主要是看那个内存的压力,2 个图的内存压力都不大。还可以接受吧。
可以在如下图这个菜单的地方找到这个设置
上面这个截图使用的 gc 还是旧版的 cms gc,下面贴上使用 g1gc 的配置,文字版,我的版本是 2021.2
-Xms1024m
-Xmx2048m
-XX:ReservedCodeCacheSize=1024m
-XX:+UseCompressedOops
-Dfile.encoding=UTF-8
-XX:SoftRefLRUPolicyMSPerMB=50
-ea
-XX:CICompilerCount=2
-Dsun.io.useCanonPrefixCache=false
-Djava.net.preferIPv4Stack=true
-Djdk.http.auth.tunneling.disabledSchemes=""
-XX:+HeapDumpOnOutOfMemoryError
-XX:-OmitStackTraceInFastThrow
-Djdk.attach.allowAttachSelf
-Dkotlinx.coroutines.debug=off
-Djdk.module.illegalAccess.silent=true
-Xverify:none
-XX:ErrorFile=$USER_HOME/java_error_in_idea_%p.log
-XX:HeapDumpPath=$USER_HOME/java_error_in_idea.hprof
-Dide.no.platform.update=true
-Dsun.io.useCanonCaches=false
-XX:ReservedCodeCacheSize=512m
-XX:+UseG1GC
-Dsplash=true
-Dtoolbox.notification.token=97Umdj0YLuibBsUF2oZWyny6WLznUJE8ci9tfLqB-q4=
-Dtoolbox.notification.portFile=/Users/fang/Library/Application Support/JetBrains/Toolbox/apps/IDEA-U/ch-0/212.4746.92/IntelliJ IDEA.app.vmoptions.port
-Didea.plugins.path=/Users/fang/Library/Application Support/JetBrains/Toolbox/apps/IDEA-U/ch-0/212.4746.92/IntelliJ IDEA.app.plugins