极致优化 IDEA 启动速度(本文内容过于硬核)

作 者:极客挖掘机
原文链接:
极致优化 IDEA 启动速度(本文内容过于硬核)文章插图
本文内容过于硬核 , 建议有 Java 相关经验人士阅读 。
1. 引言相信做 Java 开发的同学 , 对 IDEA 这个工具应该都不陌生 , 即使不使用 IDEA 做开发 , 那么对 Eclipse 这个工具应该也不会陌生 , 如果这两个都不用的同学 , 我就想弱弱问一句 , 您不会是在使用记事本吧?
极致优化 IDEA 启动速度(本文内容过于硬核)文章插图
上面除了那个记事本 , 我相信所有的同学都对 IDEA 或者说 Eclipse 这两个工具的打开速度深有印象吧 。
只要你没自己改过启动参数 , 不管电脑多高的配置 , 我相信这个打开速度应该都快不到哪去 。
前面写了这么多篇的 JVM 相关内容 , 今天我尝试优化一下 IDEA 的启动速度(手头没有 Eclipse ) , 这算是小试牛刀 , 希望最后不要翻车 。
极致优化 IDEA 启动速度(本文内容过于硬核)文章插图
2. 开始我使用的是 JDK 自带的 VisualVM 可视化工具 , 主要使用的是它的那个 GC 插件 。
极致优化 IDEA 启动速度(本文内容过于硬核)文章插图
首先第一次打开 IDEA, 加载时长按照 IDEA 所有组件加载完成进行人工卡点(本来想找个插件的 , 结果 IDEA 这方面的插件还真没找到) 。
IDEA 在打开的过程中 , 右下角会有一个进度条在一直读条 , 我就大约等那个条读完了进行计时 。
后续操作的过程中发现其实完全没必要 , 因为差距简直太明显了 。
首先在默认配置的情况下第一次打开 IDEA, 然后看下 VisualVM 的数据图:
GC 情况:
极致优化 IDEA 启动速度(本文内容过于硬核)文章插图
概览情况:
极致优化 IDEA 启动速度(本文内容过于硬核)文章插图
我直接被这个 Class Loader 加载速度惊呆了 , 活活消耗了 3m 34s 的时间 , 由于其他操作都是并行的 , 这一项的耗时直接撑破天了 。
不过同时可以看到 GC 的消耗 , 好像并不是很大 ,Minor GC 发生了 147 次 , 但是 Full GC 一次都没有发生过 , 共计耗时 712ms。
但是看到下面的概览图还是能发现一些端倪的 , 就比如当前堆大小在一直不停的扩容 。
先找到 IDEA 的配置文件 , 看下默认配置 , 我本地的路径是 D:\Program Files\JetBrains\apps\IDEA-U\ch-0, 这个路径每个人都不一样 , 大家自己找自己的 , 找到以后打开 idea64.exe.vmoptions 这个文件:
-Xms128m-Xmx750m-XX:ReservedCodeCacheSize=240m-XX:+UseConcMarkSweepGC-XX:SoftRefLRUPolicyMSPerMB=50-ea-XX:CICompilerCount=2-Dsun.io.useCanonPrefixCache=false-Djdk.http.auth.tunneling.disabledSchemes=""-XX:+HeapDumpOnOutOfMemoryError-XX:-OmitStackTraceInFastThrow-Djdk.attach.allowAttachSelf=true-Dkotlinx.coroutines.debug=off-Djdk.module.illegalAccess.silent=true可以看到最小堆是设置 128MB, 而最大堆是 750MB, 使用的是 CMS 收集器 , 我使用的电脑硬件内存是 16GB, 这么大的内存空间 , 果断直接把最小堆改成 1G, 最大堆改成 2G, 关掉 IDEA 再重启看下效果 。
修改后的配置如下:
-Xms1g-Xmx2g-XX:ReservedCodeCacheSize=240m-XX:+UseConcMarkSweepGC-XX:SoftRefLRUPolicyMSPerMB=50GC 情况:
极致优化 IDEA 启动速度(本文内容过于硬核)文章插图
概览情况:
极致优化 IDEA 启动速度(本文内容过于硬核)文章插图
可以看到 , Class Loader 时长瞬间就下来了 , 从 3m 变成了 24s, 并且 Minor GC 的时长整整缩短了一半 , 从 712ms 下降到了 342ms, 次数也由之前的 147 次下降到了现在的 9 次 , 依然没有 Full GC 产生(废话 , 内存开了这么大又填不满) 。
并且看概览图的时候可以看到 , 堆内存扩容只扩容了一次 。
那么还能不能再短点呢?看下整个图 , 感觉 ClassLoader 还有空间嘛 , 我们还可以把加载时的验证给关掉 , 使用 -Xverify:none, 这样应该还能再降低一些加载的耗时 。
修改后的配置如下:
-Xms1g-Xmx2g-XX:ReservedCodeCacheSize=240m-XX:+UseConcMarkSweepGC-XX:SoftRefLRUPolicyMSPerMB=50-Xverify:noneGC 情况:
极致优化 IDEA 启动速度(本文内容过于硬核)文章插图
概览情况:
极致优化 IDEA 启动速度(本文内容过于硬核)文章插图
果然 , 加载时长从之前的 24s 继续下降到了 19s, 差不多减少了有 1/4 左右 , 还是卓有成效的 。