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

诚信、勤奋、创新、卓越

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

13262879759

工作日:9:00-22:00

IntelliJ IDEA内存优化最佳实践:不同设置对IDEA速度和响应能力的影响

发布时间:2025-05-26

浏览次数:0

在作者与同事的交流过程中,他们注意到对内存的配置方案有所差异,这一差异将直接导致 IDEA 在运行速度和响应速度上呈现出截然不同的表现。

intellij idea 14.0.3_IDEA性能提升最佳实践_IntelliJ IDEA 内存优化设置

IDEA 内存优化最佳实践 技术分享 第1张

别再当个懒虫,给你的集成开发环境多加些功能吧。

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

昨日,众人围绕是否自定义内存配置展开了热议,部分人倾向于保留预设值,另一些人则对预设进行轻微调整,而部分开发者则会根据具体需求进行深入细致的配置。笔者目前正忙于数个微服务项目及一个老旧项目,且客户对核心业务的需求极为迫切。经过对内存进行基础配置,作者明显察觉到了该集成开发环境在运行速度与反应速度上的提升。然而,当时作者并未进行详细的量化测试,因此这仅是个人主观上的体验。

然而,在讨论中,一位开发者向笔者分享了他的配置方案,尽管它与讨论的项目相同,但该方案显得异常繁复。笔者对自己的配置并无任何不快,却对这种与项目原设定截然不同的配置产生了浓厚的兴趣,心想:与系统提供的标准配置相比,这些差异将带来怎样的效果差异呢?

目标

笔者的目标是,在模拟日常开发项目的实际场景中——比如加载一个大型项目、启动2至3个微服务,并在执行git pull操作后刷新大项目——对不同的配置方案进行效果测试,从而筛选出在内存使用和运行速度上均达到最佳平衡的配置组合。

测试机器和项目

项目

测试场景

在 Idea 中关闭所有项目

基于测试文件 idea. 进行设置

重启电脑

启动后关闭所有不相关的项目( 等等)

打开 Idea(测试时间)

打开大项目(测试时间)

检查 jstat -

打开两个微服务项目(测试时间)

检查 jstat -

返回大项目然后点击“刷新 项目”按钮(测试时间)

检查 jstat -

jstat -

jstat 是 JDK 内置的一个实用工具,它主要通过内置的指令对 Java 应用程序的资源使用情况和性能表现进行实时监控。此工具还涵盖了堆内存大小和垃圾回收状态的监控功能。jstat 提供了丰富的选项以收集各类数据(详细文档可参考),然而在本例中,我们将仅使用以下选项:-。

-gcutil - Summary of垃圾回收统计数据。
[id_1019322891]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年轻一代的GC活动。
青年时代垃圾分类时段。
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

在本文中,最为关键的指标包括垃圾回收事件(包括年轻代垃圾回收事件YGC和Full GC事件FGC)的发生频率以及相应的耗时(即年轻代垃圾回收耗时YGCT和Full GC耗时FGCT)。

测试设置

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

默认(灰色标识)

提供的默认设置:

-Xms128m
-Xmx750m
-XX:MaxPermSize=350m
请勿更改预留代码缓存大小,其设定为240兆字节。
-XX:+UseCompressedOops

Big(大)(红色标识)

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

-Xms1024m
-Xmx4096m
系统配置中,保留代码缓存的大小被设定为1024兆字节。
-XX:+UseCompressedOops

(平衡的)(蓝色标识)

Xmx与Xms均设定为2GB,这样的内存分配相当均衡,能够满足内存消耗的需求。

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

(复杂的)(橘色标识)

与之前相同,Xmx与Xms均设定为2GB,然而,在垃圾回收器及内存管理方面,我们采用了不同的回收策略,并配置了众多独特的参数。

-server
-Xms2g
-Xmx2g
-XX:NewRatio=3
-Xss16m
-XX:+UseConcMarkSweepGC
-XX:+CMSParallelRemarkEnabled
-XX:ConcGCThreads=4
-XX:ReservedCodeCacheSize=240m
-XX:+AlwaysPreTouch
-XX:+TieredCompilation
-XX:+UseCompressedOops
限制对特定参数的调整,确保每兆字节的数据在内存中至少保留50毫秒。
-Dsun.io.useCanonCaches=false
在启动Java程序时,请确保设置-Djava.net.preferIPv4Stack参数为true,以优先使用IPv4网络栈。
确保-Djsse参数中SNI扩展功能的启用被设置为关闭状态。
-ea

这便是笔者的测试配置,为了实施这一测试案例,我们需在指定位置创建一个名为idea的文件(该路径为Mac OS系统中的设定,请参考本文,根据您的操作系统调整路径)。

现在,执行测试用例并比较结果。分享给大家:!

结果Idea启动时间

intellij idea 14.0.3_IDEA性能提升最佳实践_IntelliJ IDEA 内存优化设置

IDEA 内存优化最佳实践 技术分享 第2张

正如图表所展示,启动过程并不受内存配置的影响。在所有测试场景中,Idea的运行时长均为10秒钟,不受内存分配量的多少所左右。这种情况并不令人感到意外,因为在应用的初期阶段,这些配置对应用的表现并无显著影响。

加载大项目花费的时间

当前正在导入项目及包含的70万行代码。经过一番努力,我们发现了一些细微的差别。采用默认配置所耗费的时间大约是其他配置的三倍之多。显而易见,如此庞大的代码库确实需要更大的内存空间。若我们执行:

jstat -gcutil <IDEA_PID>

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

intellij idea 14.0.3_IDEA性能提升最佳实践_IntelliJ IDEA 内存优化设置

IDEA 内存优化最佳实践 技术分享 第3张

IDEA性能提升最佳实践_IntelliJ IDEA 内存优化设置_intellij idea 14.0.3

IDEA 内存优化最佳实践 技术分享 第4张

GC 释放内存所需的总时长极为可观(几乎增至50倍),同时,Full GC 的平均运行时间同样极其漫长。在这其中,大量时间被 Full GC 所占据,正是导致 IDE 响应迟缓的根本原因。

在IDEA中打开两个微服务

现在我们需要加载这两个微服务项目,并在 IDEA 环境中对其进行打开,同时进行时间消耗的对比分析。

intellij idea 14.0.3_IntelliJ IDEA 内存优化设置_IDEA性能提升最佳实践

IDEA 内存优化最佳实践 技术分享 第5张

在此测试场景中,差异显著可见;在复杂配置下,性能最为出色;然而,默认配置依旧未能超越其他两种配置。

再次使用jstat –

在完成两个微服务项目的加载之后,我决定对在同时操作三个项目时垃圾回收(GC)的表现进行一番检验。测试结果显示,三个项目各自采用的不同自定义配置,其表现几乎一致;然而,相较于这些配置,系统默认的设置显得尤为糟糕。

IntelliJ IDEA 内存优化设置_intellij idea 14.0.3_IDEA性能提升最佳实践

IDEA 内存优化最佳实践 技术分享 第6张

intellij idea 14.0.3_IntelliJ IDEA 内存优化设置_IDEA性能提升最佳实践

IDEA内存优化技术分享会,第七部分的关键环节:关于重新加载的探讨。

目前,作者需从库中提取项目的当前最新版本,并对模块进行更新,以确保 IDEA 能够识别到所有新增的类。若想获取我整理的关于 IDEA 的教程,请关注“Java技术栈”微信公众号,并在后台回复“idea”,即可获得包含丰富内容的 N 篇教程。

IntelliJ IDEA 内存优化设置_IDEA性能提升最佳实践_intellij idea 14.0.3

IDEA 内存优化最佳实践 技术分享 第8张

请注意:该灰色条形柱的高度显著,这是因为IDEA在刷新阶段出现了崩溃,导致作者无法获取真实的时间数据。显而易见,系统默认分配的内存容量不足以支持这一操作。

通过观察三个自设的实例,我们可以察觉到,进行大内存配置所需的时间相对较短。因此,我们可以得出结论,内存的分配确实发挥了其应有的作用。

最后一次使用jstat-

由于 IDEA 在其预设配置中不具备项目刷新的功能,因此在本轮测试中,我们未将默认配置纳入考量范围。

intellij idea 14.0.3_IDEA性能提升最佳实践_IntelliJ IDEA 内存优化设置

IDEA 内存优化最佳实践 技术分享 第9张

IDEA性能提升最佳实践_IntelliJ IDEA 内存优化设置_intellij idea 14.0.3

IDEA 内存优化最佳实践 技术分享 第10张

观察图表可知,这三者间的区别并不显著,然而在 Big 配置条件下,Full GC 的执行速度达到最快。另外,增大 Xmx 内存容量对于提升响应速度的效果尤为显著。

总结

在这次实验过程中,大家观察到,即便对内存进行细微的调整,也能显著提高集成开发环境(IDE)的性能。显然,内存分配得越多,其执行效果就越佳。然而intellij idea 14.0.3,同时也会注意到,除了IDE,许多其他应用程序同样需要占用内存资源。

因此,我们的追求理应是寻求性能提升与内存使用之间的恰当平衡。据我观察,通常将最大堆内存(Xmx)的值设定在2至3G之间intellij idea 14.0.3,效果会更为理想。若你拥有充裕的时间,不妨利用jstat等工具,去检测不同JVM配置对性能与内存占用的影响。

讨论

你的构想是如何安排的?你还有哪些增强效率的策略吗?让我们来聊聊这些话题吧。

如有侵权请联系删除!

13262879759

微信二维码