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的堆值设置大一些,见下图: