工欲善其事,必先利其器。idea作为Java程序员们工作中,打交道最多的软件,如果有过大量微服务项目同时开启开发的经验的程序员,想必会对idea是又爱又恨,过高的内存占用,运行时间长后idea响应迟钝,甚至无响应,简直令人抓狂。下面我们来让我们的idea变得更加好用吧,这些优化不仅仅是针对idea,理论上DataGrip,GoLand等Jetbrains的ide软件都是可以使用的。

1.JVM参数优化

idea也是基于Java开发,是运行在JVM中的,JVM的调优同样适用于idea。在idea中,工具栏中点击Help > Edit Custom VM Options,即可编辑JVM参数,重启后生效。

-Xverify:none 是让JVM加载类文件的时候,不去校验类文件的合法性完整性等,可以显著提高类加载的速度。我们默认idea软件提供的类都是可靠,配置这个参数后可以明显提高idea的打开时间,实现秒开的效果。

-Xmx2g 设置了最大的堆内存大小,可以控制你的idea无限制地占用你的系统内存。我这里设置的是2g,已经可以满足我的办公需要,大家可以按需调整。需要注意的是,这个堆内存你的idea编辑器的,所有idea打开的项目是共享这个堆内存的,但是,你在idea中run运行的程序,是不受这里的堆内存限制的。

-XX:+UseG1GC 配置使用G1垃圾回收器,目前最新版的idea已经是基于JDK17开发,支持ZCG和Shenandoah GC等新一代的垃圾回收器,但是目前都不足够稳定,也不适用于idea的使用场景。

在我的测试中,ZCG和Shenandoah GC均不能及时有效地进行垃圾回收,比较容易出现因堆内存占满导致idea严重卡顿的现象。所以我还是比较推荐使用G1垃圾回收器。

打开Memery Indicator,实时关注idea的堆内存占用情况。在idea的底栏,右键将Memery Indicator勾选上,就能在右下角实时看到内存占用,双击内存占用的显示条,还能手动触发垃圾回收释放内存。

完整配置文件参考:

-Xms1g
-Xmn256M
-Xmx2g
-XX:ReservedCodeCacheSize=512m
-XX:+UseG1GC
-XX:+UseStringDeduplication
-XX:MaxGCPauseMillis=200
-XX:InitiatingHeapOccupancyPercent=60
-XX:G1HeapRegionSize=32
-XX:ParallelGCThreads=8
-XX:G1ReservePercent=15
-XX:CICompilerCount=2
-XX:TieredStopAtLevel=1
-XX:MaxInlineLevel=3
-XX:Tier4MinInvocationThreshold=100000
-XX:Tier4InvocationThreshold=110000
-XX:Tier4CompileThreshold=120000
-Dsun.io.useCanonPrefixCache=false
-Djava.net.preferIPv4Stack=true
-Djdk.http.auth.tunneling.disabledSchemes=""
-XX:+HeapDumpOnOutOfMemoryError
-XX:-OmitStackTraceInFastThrow
-Djdk.attach.allowAttachSelf
-Xverify:none
-XX:SoftRefLRUPolicyMSPerMB=50
-Dkotlinx.coroutines.debug=off
-Djdk.module.illegalAccess.silent=true
-Dfile.encoding=UTF-8

2. 插件精简

每个idea插件都是要占用一定的内存的,所以尽量只安装和启用自己用的到的插件,可以减少idea对堆内存的占用,一定程度上提高idea的启动和运行效率。

idea自带的插件,Code With Me、 IDE Features Trainer 、Space、安卓套件、已经很少用到的Ant等,可以按自己实际需要把用不上的插件都给disable掉。

自己安装的插件如果不经常使用的话也可以disable掉或者直接卸载。后续我也会陆续给大家分享一些我经常使用的一些可以提高开发效率的插件给大家。

如果本文对你有帮助,欢迎大家关注收藏。作为一名具有极客精神的程序员,我会持续地给大家分享一些个人的开发经验和技术文章,若能帮助到你,那将是我莫大的荣幸。大家也可以关注我的同名微信公众号“三易程序员”,文章会在公众号和头条号同步更新,也欢迎大家私信探讨技术问题。

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐