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

诚信、勤奋、创新、卓越

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

13262879759

工作日:9:00-22:00

intellij idea gradle IntelliJ IDEA内存设置探讨:不同方案对速度有何影响?

发布时间:2025-08-30

浏览次数:0

作者在与同僚的交流中察觉到,针对 IDEA 的内存配置运用不同的方案,将导致该开发工具的运行效能及反馈速度出现差异。

不要做懒散的人,要给你的集成开发环境提供更多帮助

[]

昨天,人们就如何调整 IDEA 的内存参数展开了讨论,部分人坚持采用系统推荐值,部分人会对推荐值进行细微调整,更有一些程序员会根据个人使用情况实施细致周全的配置方案。本人当前负责若干微服务工程以及一个历史遗留项目,而客户的关键业务目标要求极高。对 IDEA 的内存参数稍作调整,作者立刻察觉到这个集成开发环境在运行效率和即时反馈上有了显著进步。不过那时作者没有进行精确的量化分析,因此这仅代表个人的直观体验。

另有一位参与讨论的开发者intellij idea gradle,向笔者分享了他的配置方案,尽管两者都应用于同一项目,但该方案显得异常繁复。笔者对自己的配置并无任何异议,只是极想知道,将这些迥异的配置与系统预设的方案进行对照,最终会产生何种差异。

目标

要进行测试,需模拟常规开发环境,包括载入大型项目、载入两三个微服务、执行git pull操作后刷新主项目。目标是评估不同配置的效果,找出内存占用与运行速度均表现最佳的那一套配置方案。

测试机器和项目

笔记本电脑:型号Pro,处理器为2.3GHz英特尔酷睿i7,内存容量16GB DDR3,硬盘类型SSD,操作系统为macOS

项目

这个工程规模庞大,包含了70万行用Java 8编写的代码,并且由303个不同的模块构成。

两个微服务,每项包含一个模块,大约有10000到20000行代码,采用Java 8开发

测试场景jstat -

jstat 是 Java 开发工具包中自带的一个程序,它借助虚拟机内部指令,能够实时通过命令行界面,对 Java 程序的资源和运行表现进行观察,同时还能查看内存分配大小以及垃圾回收的运行情况。

jstat 完整的文档:

不允许更改专有名词,只对句子结构进行调整,确保不使用原文中的词汇,同时保持语言风格一致,并且将长句拆分成多个小分句,每个分句之间用逗号隔开,句末保留标点符号。

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

-gcutil - Summary of废物回收的统计数据。
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年轻群体参与竞赛活动,组织各类庆典仪式,开展丰富多样的文体竞赛项目
青年一代废物清理时刻
FGC: Number of full GC events.  
FGCT代表整体垃圾收集所耗费的时长,具体指代从开始到结束的全部过程,包括各个阶段的时间总和。
GCT,即整体垃圾回收耗时。

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

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:预留代码缓存区大小设定为二百四十兆字节
-XX:+UseCompressedOops

Big(大)(红色标识)

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

-Xms1024m
-Xmx4096m
XX:预留代码缓存区大小为一千零二十四兆字节
-XX:+UseCompressedOops

(平衡的)(蓝色标识)

Xmx 和 Xms 都设定为 2GB,内存使用非常均匀,这样的分配很合理。

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

(复杂的)(橘色标识)

Xmx 和 Xms 都设置为2GB内存,但是针对垃圾回收和内存管理,指定了不同的垃圾回收机制intellij idea gradle,并且配置了多种不同的参数选项

-server
-Xms2g
-Xmx2g
-XX:NewRatio=3
-Xss16m
-XX:+UseConcMarkSweepGC
-XX:+CMSParallelRemarkEnabled
-XX:ConcGCThreads=4
-XX:ReservedCodeCacheSize=240m
-XX:+AlwaysPreTouch
-XX:+TieredCompilation
-XX:+UseCompressedOops
限制每兆字节使用五十毫秒的软引用和弱引用的最近最少使用策略
-Dsun.io.useCanonCaches=false
不可以选用IPv4协议栈选项
关闭Djsse的SNI扩展功能
-ea

测试方案已经制定完毕,为了实施这个测试任务,必须在~////目录中建立一个idea文件(这个路径配置适用于Mac OS系统,其他系统需要根据实际情况调整)

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

结果Idea启动时间

IntelliJ IDEA 性能提升内存配置_IntelliJ IDEA 内存设置优化_intellij idea gradle

如图所见,启动时刻与内存配置毫无关联。Idea在各个情境下的检测时长恒定为十秒,不受内存分配量影响。此现象并不令人意外,由于在初期阶段,这些参数尚无法改变程序的实际运作。关于更多IDEA信息:

加载大项目花费的时间

当前开始处理那个工程以及它包含的七十万行程序代码,随后,某些地方显现出不同之处,选用标准配置所耗费的时长差不多是其他选择的3倍,显而易见,如此庞大的程序集合需要更多的存储空间,假如我们进行

jstat -gcutil <IDEA_PID>  

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

GC 回收内存所耗费的总体时长十分可观,几乎达到了五成,并且 Full GC 的平均运行周期也异常漫长。绝大部分时间都消耗在 Full GC 上,这构成了 IDE 反应迟缓的症结所在。

在IDEA中打开两个微服务

此刻开始部署这两个小型应用,在开发工具中启动它们,然后测量各自耗费的时长。

在这个测试场景里,不同配置之间的差别十分显著,精心调整过的配置效果最为出色,而基础配置相比之下则稍显逊色。

再次使用jstat –

部署两个微服务应用之后,需要考察一下运行三个项目时,垃圾回收器的运行状况如何。实验结果显示,三种不同的个人化配置几乎效果相同,而系统原版配置则相当不理想。

最后的角逐:重新加载

此刻,作者要从库房里取出 计划的最新资料,还要更新 组件,如此一来, IDEA 才能识别全部新增的类别。

默认设置所对应的灰色条形柱异常高耸,缘于 IDEA 在刷新环节发生故障,导致作者无法测定真实耗时。显而易见,预设的内存配置无法满足该任务的运行需求。

从三个选定案例中可以观察到,采用大内存方案所用时间最为短暂。由此可见,内存分配方案确实存在积极影响。

最后一次使用jstat-

由于 IDEA 的初始配置下不能更新工程,因此,本次检测的初始配置不纳入考量范围。

根据图片信息可知,这三者之间的差别并不显著,不过,在 Big 设置条件下,Full GC 的运行过程最为迅速。而且,增加 Xmx 内存容量,对提高响应性能的效果相当显著。

总结

本次简短测试表明,即便对 IDEA 的内存配置进行细微调整,也能显著增强软件运行效率。通常情况下,分配更多内存资源,其工作表现会更为理想。然而,人们也会注意到,众多其他软件同样需要占用系统内存。因此,应当寻求提升运行速度与内存占用之间的最佳结合点。

个人认为,多数情况下将 Xmx 参数调整至 2G 至 3G 的区间最为适宜。若有充裕的时段,能够借助 jstat 工具以及相应手段,来考察不同的 JVM 参数配置对运行效能及内存消耗的具体作用。

讨论

你的构思具体是怎样安排的?你另外有什么途径能够增强 IDEA 的运作效率?不如咱们交流交流。

谈谈别的,鸟哥是个热衷于钻研的程序员,在闲暇时喜欢创造个人网站、小程序、应用软件等,这些项目都离不开服务器支持!他近期就围绕服务器话题组建了一个微信群,对服务器感兴趣或计划开发产品的朋友们可以加入,彼此分享知识,促进沟通!他还会偶尔分享一些与服务器相关的优惠信息!对折腾不感兴趣或不热衷于此类活动的人,就不必参与了!

识别二维码,添加微信后

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

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

如有侵权请联系删除!

13262879759

微信二维码