你好,欢迎进入江苏优软数字科技有限公司官网!

诚信、勤奋、创新、卓越

友好定价、专业客服支持、正版软件一站式服务提供

13262879759

工作日:9:00-22:00

intellij idea图标 IntelliJ IDEA内存设置不同,对IDE速度和响应影响各异

发布时间:2026-05-22

浏览次数:0

在与同事的一回讨论当中,本文的作者察觉到,针对IDEA内存运用不一样的设置办法,会给IDE的速度以及响应能力带来不一样的影响。

这句话似乎不太完整且有拼写错误,不太能准确理解其完整意思来进行改写。请你检查并补充完整准确的内容,以便我更好地为你改写。

不要做守财奴,给IDE多留点内存吧。

昨天,众人针对是否自定义IDEA的内存设置展开了讨论,部分人选取默认设置,部分人会对默认设置做简单变动,另有一些开发者会依据自身需求开展全面复杂的设置。笔者当下的工作是处理几个微服务项目以及一个老项目,并客户的核心业务需求极为庞大。于对IDEA内存实施简单设置之后,笔者显著察觉到该IDE在速度以及响应方面的改进。然而当时笔者并未开展具体的测量,因而这仅仅是主观感受罢了。

然而,有一位参与到讨论之中的开发者,给笔者发送了一份属于他自己的设置,尽管此设置是针对同一个项目,可它却极为复杂。笔者对于自身的设置并没有什么不满之处,不过却满怀好奇,这些全然不同的设置,与所提供的默认设置相比较,究竟会存在怎样的差异呢。

目标

笔者有着这样的计划,那就是,在一种靠近日常开发项目的情景之下,此情景为加载一个规模较大的项目,加载两三个微服务,在进行git pull操作之后刷新大项目,在这样的情况下,去测试各个设置所带来的效果,并且挑选出当内存消耗以及速度都达到最为优化状态时的最佳设置。

测试机器和项目

笔记本电脑,其型号为Pro,具备2.3GHz的Intel Core i7处理器,拥有16GB的DDR3内存,配备SSD Disc存储,运行OS X系统。

项目

这是一个大项目,它有着70万行代码,代码基于Java 8 ,并且它包含303个模块。

有两个微服务,是一个小项目,代码行数在约10000至20000行之间,用的是Java 8,且这两个微服务各自都有一个模块。

测试场景jstat -

jstat属于JDK自带工具,它主要借助JVM内建指令,针对Java应用程序的资源与性能展开实时的命令行监控,其中涵盖对Heap size以及垃圾回收状况的监控。

jstat 完整的文档:

https://docs..com//8/docs//tools/unix/jstat.html

它有许多选项来收集各种数据,但这里只会用到:- :

-gcutil - Summary of garbage collection statistics.
S0: Survivor space 0 utilization as a percentage of the space's current capacity.  
S1: Survivor space 1 utilization as a percentage of the space's current capacity.  
E: Eden space utilization as a percentage of the space's current capacity.  
O: Old space utilization as a percentage of the space's current capacity.  
M: Metaspace utilization as a percentage of the space's current capacity.  
CCS: Compressed class space utilization as a percentage.  
YGC: Number of young generation GC events.  
YGCT: Young generation garbage collection time.  
FGC: Number of full GC events.  
FGCT: Full garbage collection time.  
GCT: Total garbage collection time.  

这个命令的输出结果如下:

S0     S1    E     O     M    CCS  YGC YGCT FGC  FGCT   GCT  
89.70 0.00 81.26 74.27 95.68 91.76 40 2.444 14  0.715  3.159  

在本文范围里面,关键程度最高的参数是,GC事件,也就是YGC和FGC的次数,以及收集时间,也就是YGCT和FGCT。

测试设置

笔者设置了四种不同的设置,为了好记,给它们起了不同的名字。

默认(灰色标识)

提供的默认设置:

-Xms128m
-Xmx750m
-XX:MaxPermSize=350m
-XX:ReservedCodeCacheSize=240m
-XX:+UseCompressedOops

Big(大)(红色标识)

给 Xmx 配 , e 设置 ,这已经是相当多的内存了:

-Xms1024m
-Xmx4096m
-XX:ReservedCodeCacheSize=1024m
-XX:+UseCompressedOops

(平衡的)(蓝色标识)

都分配 2GB 的 Xmx 与 Xms,这有着相当平衡的内存消耗:

-Xms2g
-Xmx2g
-XX:ReservedCodeCacheSize=1024m
-XX:+UseCompressedOops

(复杂的)(橘色标识)

如上述那般,Xmx与Xms 均被分配为2GB,然而针对GC以及内存管理,却指定了各异的垃圾回收器以及诸多不同的标志。

-server
-Xms2g
-Xmx2g
-XX:NewRatio=3
-Xss16m
-XX:+UseConcMarkSweepGC
-XX:+CMSParallelRemarkEnabled
-XX:ConcGCThreads=4
-XX:ReservedCodeCacheSize=240m
-XX:+AlwaysPreTouch
-XX:+TieredCompilation
-XX:+UseCompressedOops
-XX:SoftRefLRUPolicyMSPerMB=50
-Dsun.io.useCanonCaches=false
-Djava.net.preferIPv4Stack=true
-Djsse.enableSNIExtension=false
-ea

上面所讲的这些,就是笔者所进行的测试设置,要去执行这个测试用例的话,还得在~////之下创建一个名为idea.的文件,这是在Mac OS系统情形下的路径设定,需依据各位的操作系统来予以设置咧。

现在,执行测试用例并比较结果。

结果Idea启动时间

就如同上面的图所显示的那样,启动的时间并非依靠于内存的设置,Idea在所有景象状况之下的测试用时都是10秒,不管内存的分配数量是多少,这并没有什么值得奇怪的,因为在这个早期的阶段,这些设置并不会对应用的行为产生影响,更多IDEA的内容:

加载大项目花费的时间

目前正在加载,项目以及其七十万行代码。最终intellij idea图标,呈现出了些许的差异。默认设置所耗费的时间差不多是其他的三倍。显而易见,这般庞大的代码库需要更多的内存。要是我们执行:

jstat -gcutil <IDEA_PID>  

会发现,对比其它设置, GC 在默认设置下会变得异常忙碌。

这不光 GC 释放内存的总体时间特别高(差不多达到了五十倍),并且 Full GC 的平均执行时间也异常漫长,有着足量的时间耗费在了 Full GC 之上,如此便是 IDE 响应速度低的主要缘由。

在IDEA中打开两个微服务

此刻,加载这两个微服务项目,于IDEA里面将其打开,继而对比它们各自所需要消耗的时间。

于这个测试用例当中,差异是极为显著的,复杂设置呈现出最佳表现,然而默认设置依旧在与其他两种设置相较时处于落败态势。

再次使用jstat –

装载完毕两个微服务项目之后,前来查验一下于同时开启3个项目的情形下,GC的呈现状况。经过测试发觉,3个各异的自定义配置展现几乎相差无几,然而默认配置简直差劲透顶了。

最后的角逐:重新加载

此时此刻,笔者要自仓库里获取项目的最新版,还要刷新模块,如此这般,IDEA方可看到所有新类。

需要特别明确且着重指出的是,呈现为代表默认设置状态的灰色条形柱,其高度是相当高的,这是由于在进行IDEA刷新这个过程的时候,出现了崩溃的情况,进而导致笔者没办法去测量实际所需要的时间,很明显的是,按照默认状态所分配过来的内存这一额度,是根本不足以去执行该项操作的。

依据三个自定义的例子能够察觉到,大内存的配置所耗费的时间是最为短暂的,因此,内存的分配确实发挥了作用。

最后一次使用jstat-

由于IDEA于默认设置状况下没办法刷新项目,因而,此次测试默认设置就没被涵盖在其中。

由上图能够看出,三者相互之间的差异并非很大,然而在Big配置情形下的Full GC执行时间是最为快速的。除此之外,Xmx内存更大一些对响应能力提升所起到的帮助来讲是极为显著的。

总结

于此次简短实验里,众人能够发觉,哪怕对IDEA内存予以微调,亦能够大幅提升IDE性能。当然,内存分配愈多,执行效果便愈佳。然而,你亦会察觉,IDEA之外诸多其他应用程序同样需要耗用内存,所以,大家的目标应当是于提高性能与内存消耗之间寻觅到一种平衡。

按笔者的想法来看,在大部分情形之下intellij idea图标,将Xmx值设定于2G和3G之间是极为合适的。要是你拥有更多的时间,那么能够运用jstat以及检验以不同的JVM设置怎样去影响性能与内存占用。

讨论

你所拥有的那个想法,究竟是怎样去进行配置的?你是否还存在着其他能够提升IDEA性能的办法?要不然咱们一同展开商讨一番。

讲个题外的话,鸟哥身为程序员,是那种颇为热衷于折腾的,在业余之时偏向于开展自己的网站、自己的小程序,还有自己的App等,而这些事物无一不是和服务器紧密关联的!就在最近,围绕着服务器这个主题构建了一个微信群,那些喜爱玩服务器或者想要自行开发一款产品的读者能够加入进来,彼此进行学习和交流!我也会时不时地带大家去获取一些跟服务器有关的优惠券!要是对此不感兴趣,不喜好折腾的话,那就没必要跟着凑这个热闹了!

识别二维码,添加微信后

发送【服务器】即可获取邀请链接

这是我部署的机器人,请勿调戏!

如有侵权请联系删除!

13262879759

微信二维码