• 推荐
  • 评论
  • 收藏

IntelliJ IDEA 参数配置、内存及性能、卡顿优化

2020-06-25    2702次浏览

JVM内存优化

找到 IntelliJ IDEA 的安装目录下的 bin 目录并进入,找到 idea.exe.vmoptions 或者 idea64.exe.vmoptions 文件(具体修改哪一个需要看你使用的是32位的还是64位的)

设置JVM的启动参数(物理内存为4-8G)

将打开的后缀为vmoptions 的文件的 原始配置信息修改为:
-server
-Xms1024m
-Xmx2048m
-XX:ReservedCodeCacheSize=480m
-XX:+UseConcMarkSweepGC
-XX:SoftRefLRUPolicyMSPerMB=50
-ea
-Dsun.io.useCanonCaches=false
-Djava.net.preferIPv4Stack=true
-XX:+HeapDumpOnOutOfMemoryError
-XX:-OmitStackTraceInFastThrow
  • -Xms1024m 设置初时的内存大小,提高Java程序的启动速度,调整 初始化内存,可以有效的降低Full Gc频率,这种方式效果很明显
  • -Xmx2048m 设置最大内存数,提高该值,可以减少内存Garage收集的频率,提高程序性能,默认应为物理内存的1/3,最佳设值应该视物理内存大小及计算机内其他内存开销而定
  • -XX:ReservedCodeCacheSize=480m设置代码内存容量
  • -XX:+UseParNewGC 使用并行收集算法
  • -server 控制内存garbage方式,这样你无需在花一到两分钟等待内存garbage的收集
  • -Xmn Java Heap Young区大小,不熟悉最好保留默认值
  • -Xss 每个线程的Stack大小,不熟悉最好保留默认值
  • -XX:PermSize 永久区的大小。-XX:+UseParNewGC 使用并行收集算法

设置JVM的启动参数(物理内存为8-12G)

-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

设置JVM的启动参数(物理内存为8-16G)

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

大家可以发现,即使对 IntelliJ IDEA 内存进行微调,都可以大大提升 IDE 性能。当然,内存分配越多,执行效果就越好。但是,你也会发现, IDE 之外许多其他应用程序也需要消耗内存,所以,大家的目标应该是在提高性能和内存消耗之间找到一个平衡。笔者认为,在大多数情况下,把 Xmx 值设置在 2G 和 3G 之间是最佳的。如果你有更多的时间可以用 jstat 和 jvisualm 检查用不同的 JVM 设置如何影响性能和内存占用。

使用 jconsole 监控 full gc 频率

JConsole 是一个内置 Java 性能分析器,可以从命令行(直接输入jconsole)或在 GUI shell (jdk\bin下打开)中运行。它用于对JVM中内存,线程和类等的监控。可使用JTop插件。它可以监控本地的jvm,也可以监控远程的jvm,也可以同时监控几个jvm。这款工具的好处在于,占用系统资源少,而且结合Jstat,可以有效监控到java内存的变动情况,以及引起变动的原因。在项目追踪内存泄露问题时,很实用。

IntelliJ IDEA 参数配置

打开idea.properties文件,找到idea.max.intellisense.filesize,默认是2500,改为25000(数值仅供参考,具体数值根据自己文件大小来定)。

通过IDEA的菜单来设置JVM的启动参数

我们在IDEA启动完成后,也可以通过顶部菜单:Help - Edit Custom VM Options... 菜单来设置自定义配置,这样设置的话IntelliJ会优先使用这个地方的配置文件。

关闭代码检查

IntelliJ的代码检测功能非常强大,但同时也占用了一些资源,可以将默认的除 Error之外的其他级别的检测都去掉。

清空缓存并重建索引

在做完上述设置之后,最好通过点击 File -> Invalidate Caches / Restart...菜单,然后点击 Invalidate and Restart按钮清空并重建索引,然后重启。再次启动程序之后,会首先重建索引和缓存。

设置编译进程和Maven的堆值

将编译进程和Maven的堆值设置大一些,见下图: