发布时间:2025-12-02
浏览次数:0
本文作者在和同事的一次讨论中发现,
对 IDEA 内存采用不同的设置方案,
会对 IDE 的速度和响应能力产生不同的影响。
不要成为那样的人,给你的集成开发环境更多的什么东西,(这里原句不完整,无法准确完成改写)。
不要做守财奴,
给IDE多留点内存吧。
昨天,
大家就是否自定义 IDEA 的内存设置进行了讨论,
有些人选择默认设置,
有些人会对默认的设置进行简单的变更,
并且还有一部分开发者,会依据他们自身的需求,去开展全面且复杂的设置。笔者当下此刻所从事的工作,是对几个微服务项目以及一个老项目进行处理,。
客户的核心业务需求规模十分庞大,在对IDEA内存实施了一番简单的布置之后,。
这位笔者显著体会到了那个 IDE 在速度以及响应这两方面的改进intellij idea logo,然而在那个时候这位笔者并没有开展具体的测量,。
所以这只是主观感受而已。
不过,
参与讨论的一位开发者给笔者发了一份他的设置,
虽然是针对同个项目,
该设置却极其复杂。笔者对自己的设置并无不满,
但非常好奇,
这些完全不同的设置对比 提供的默认设置,
会有怎样的不同。
目标
笔者的计划是,
于一个贴近日常开发项目的情景之中,此情景为加载一个大型项目,加载两三个微服务,在执行git pull操作之后刷新该大型项目,。
测试各个设置带来的效果,
并选出内存消耗和速度都达到最优时的最佳设置。
在Idea里将所有项目关闭,这是针对测试机器、测试项目以及测试场景而言的。依据测试文件idea进行相关设置。把电脑重启。启动之后把所有不相关的项目关闭(等等)。将Idea打开(测试时间),把大项目打开(测试时间)。对jstat -进行检查。把两个微服务项目打开(测试时间)。对jstat -进行检查。返回到大项目接着点击“刷新项目”按钮(测试时间)。对jstat -进行检查。jstat -。
jstat 是 JDK 自带的工具,
首先,借助 JVM 所内建之指令,接着,针对 Java 应用程序的资源,然后,再针对其性能,进行实时状态下的命令行式监控 。
还涵盖了针对Heap size以及垃圾回收状况的监控,它具备诸多选项用以收集各类数据,有完整的文档 。
但这里只会用到:- :
该命令用于垃圾回收统计信息的总结,它会汇总那些与垃圾回收相关的数据情况,以一种特定的方式呈现出统计结果,从而帮助用户了解垃圾回收的各项统计详情,最终形成一个关于垃圾回收统计的概要。
步骤一:将“Survivor space 1 utilization”改写为“生存空间1的使用情况” ,把“as a percentage of”改写为“作为……的百分比”,把“the space's current capacity”改写为“该空间当前的容量” 。然后就变成了:生存空间1的使用情况,作为该空间当前容量的百分比。 ,。
E,即伊甸空间作为该空间当前容量的百分比使用率 。 伊甸空间使用率,指伊甸空间占该空间当前容量的百分比 。
老空间利用率,以该空间当前容量的百分比来表示,是这样算来的,是老空间利用的情况。 ,所占该空间当前之容量的比例作为多少 !
这是一个关于元空间使用率相对于这个空间当前容量的百分比的相关内容陈述 ,它是由M所提及的 ,这里所说的使用率是针对元空间而言 ,而比率的参照对象是该空间当下的容量 ,并且是以百分比的形式来体现这种关系 。
YGCT,即年轻一代垃圾回收时间 ,是指年轻一代进行垃圾回收所花费的时间 。
FGC,是指完整垃圾回收事件的数量。 ,。
用于垃圾回收的总,时间,垃圾回收的,是,GCT指的,即,全部的,时间垃圾回收,时间垃圾回收的全部,是GCT。
这个命令的输出结果如下:
请你明确一下需求呀,比如对这些内容进行润色、翻译、根据其进行创作等等,这样我才能更准确地按照要求改写相关内容。仅给出这些字符,不太清楚具体要怎么改写呢。
八十九点七零,零点零零,八十一点二六,七十四点二七,九十五点六八,九十一点七六,四十,二点四四四,十四,零点七一五,三点一五九 。
在本文中,
在众多参数里,最为关键重要的那个参数,是GC事件,也就是YGC和FGC这两种情况的次数,以及收集时间,即YGCT和FGCT这两个方面的时间 。
测试设置
笔者设置了四种不同的设置,
为了好记,
给它们起了不同的名字。
默认(灰色标识)
提供的默认设置:
-Xms128m
-Xmx750m
-XX:MaxPermSize=350m
“-XX”冒号后面跟着“ReservedCodeCacheSize”等于“240m” ,句号 。
-XX:+UseCompressedOops
Big(大)(红色标识)
给 Xmx 配 ,
e 设置 ,
这已经是相当多的内存了:
-Xms1024m
-Xmx4096m
将 -XX 后面的 ReservedCodeCacheSize 设置为 1024m ,其中 -XX 是相关参数标识 ,。
-XX:+UseCompressedOops
(平衡的)(蓝色标识)
Xmx 和 Xms 都分配 2GB ,
https://mp..qq.com/s/9g)
这是相当平衡的内存消耗:
-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
设置为,让Java网络优先使IPv4协议栈,等于真这个状态 。
-Djsse,开启了SNI扩展关闭的状态判定为假,有这样的情况,即要将其设置为假 ,是。
-ea
以上便是笔者的测试设置,
为了执行该测试用例,
还需要在
于 Mac OS 系统下的那种情形里,去开展一项创建一个名为 idea. 文件的行为,这是隶属于该系统下路径设置范畴的操作 。
查看这篇文章,
基于你的操作系统进行设置)
现在,
执行测试用例并比较结果。
结果Idea 启动时间
正如上图所示,
并非内存设置决定启动时间。Idea于各个场景开展测试之时,所耗时间均为10秒,。
无论内存分配有多少。这并不足为奇,
因为在此早期阶段,
这些设置并不会影响到应用的行为。
加载大项目花费的时间
现在加载 项目及其 70 万行代码。终于,
呈现出了些许的差异,默认设置耗费的时间差不多是别的3倍,十分显著,。
如此庞大的代码库需要更多的内存。如果我们执行:
jstat -gcutil
会发现,
对比其它设置,
GC 在默认设置下会变得异常忙碌。
不光是 GC 这个东西,去把内存释放掉的总体时间,那可是相当高的程度,差不多都快走到了五十倍那么高的地步,。
而且,Full GC 的平均执行之时,也着实是特别特别漫长的。众多的时间,都耗费在了 Full GC 之上,。
这是 IDE 响应速度低的主要原因。
在 IDEA 中打开两个微服务
现在加载这两个微服务项目,
在 IDEA 中打开并且对比他们所消耗的时间。
在这个测试用例下,
差异还是非常明显的,
复杂设置表现最佳,
而默认设置仍旧输给了其他两种设置。
再次使用 jstat –
加载完两个微服务项目后,
来检查一下同时打开 3 个项目的情况下intellij idea logo,
GC 的表现情况。经测试发现,
3 个不同的自定义设置表现几乎差不多,
而默认设置简直弱爆了。
最后的角逐:重新加载
现在,
笔者需要从仓库中获得 项目的最新版本,
并且刷新 模块,
这样,
IDEA 能看到所有的新类。
重要提示:代表默认设置的灰色条形柱非常高,
因为 IDEA 在刷新过程中崩溃了,
笔者无法测量实际时间。显然,
默认分配的内存不足以执行该操作。
但从三个自定义例子中可以发现,
大内存配置花费的时间是最短的。所以,
内存分配还是起到了作用。
最后一次使用jstat-
因为 IDEA 在默认设置下无法刷新项目,
所以,
这次测试默认设置就不包括在里面。
从上图可以看出,
三者之间的差异不大,
可是,在名为Big的那种配置情形之下,Full GC的执行时间是最为快速的。除此之外,。
Xmx 内存大些对响应能力提升的帮助非常明显。
总结
在这次简短的实验中,
大家可以发现,
即使对 IDEA 内存进行微调,
都可以大大提升 IDE 性能。当然,
内存分配越多,
执行效果就越好。但是,
你也会发现,
IDE 之外许多其他应用程序也需要消耗内存,
所以,
所有人的目标应当是于提升性能以及内存消耗之间寻觅到一种平衡,笔者觉得,。
在大多数情况下,
将 Xmx 值设定于 2G 与 3G 之间是最为适宜的。要是你拥有更为充裕的时间,能够借助 jstat 以及检查,去观测不同的 JVM 设置怎样对性能和内存占用产生影响。
讨论
你所拥有的那个想法,究竟是怎样去进行配置的呀?你还存在着别的能够提升IDEA性能的办法吗?可不可以一起开启讨论呀。
如有侵权请联系删除!
Copyright © 2023 江苏优软数字科技有限公司 All Rights Reserved.正版sublime text、Codejock、IntelliJ IDEA、sketch、Mestrenova、DNAstar服务提供商
13262879759
微信二维码