「IntelliJ IDEA」一打开IntelliJ IDEA,电脑卡的要死,该如何优化内存呢?
本文作者在和同事的一次讨论中发现 , 对 IntelliJ IDEA 内存采用不同的设置方案 , 会对 IDE 的速度和响应能力产生不同的影响 。
本文插图
Don’t be a Scrooge and give your IDE some more memory
不要做守财奴 , 给IDE多留点内存吧 。
昨天 , 大家就是否自定义 IntelliJ IDEA 的内存设置进行了讨论 , 有些人选择默认设置 , 有些人会对默认的设置进行简单的变更 , 还有一些开发者会基于他们的需求进行全面复杂的设置 。 笔者目前的工作是处理几个微服务项目和一个老项目 , 而客户的核心业务需求非常大 。 对 IntelliJ IDEA 内存进行简单设置以后 , 笔者明显感受到了该 IDE 在速度和响应方面的改善 。 但当时笔者并未进行具体的测量 , 所以这只是主观感受而已 。
不过 , 参与讨论的一位开发者给笔者发了一份他的设置 , 虽然是针对同个项目 , 该设置却极其复杂 。 笔者对自己的设置并无不满 , 但非常好奇 , 这些完全不同的设置对比 JetBrains 提供的默认设置 , 会有怎样的不同 。
目标 笔者的计划是 , 在一个接近日常开发项目的场景下(加载一个大项目、加载2、3个微服务、git pull 后刷新大项目) , 测试各个设置带来的效果 , 并选出内存消耗和速度都达到最优时的最佳设置 。
测试机器和项目 笔记本电脑:MacBook Pro Retina, 2.3GHz Intel Core i7, 16GB 1600Mhz DDR3,SSD Disc, OS X Yosemite
项目 大项目—— Monolith, 70万行代码( Java 8 和 Groovy ) , 303个Gradle模块
两个微服务——约有10000——20000行代码( Java 8 和 Groovy )的小项目 , 各有一个Gradle模块
测试场景
- 在 Idea 中关闭所有项目
- 基于测试文件 idea.vmoptions 进行设置
- 重启电脑
- 启动后关闭所有不相关的项目( communicators 等等)
- 打开 Idea(测试时间)
- 打开大项目(测试时间)
- 检查 jstat -gcutil
- 打开两个微服务项目(测试时间)
- 检查 jstat -gcutil
- 返回大项目然后点击“刷新 Gradle 项目”按钮(测试时间)
- 检查 jstat -gcutil
jstat 完整的文档:
https://docs.oracle.com/javase/8/docs/technotes/tools/unix/jstat.html
它有许多选项来收集各种数据 , 但这里只会用到:-gcutil :
-gcutil - Summary of garbage collection statistics.S0: Survivor space 0 utilization as a percentage of the space's current capacity.S1: Survivor space 1 utilization as a percentage of the space's current capacity.E: Eden space utilization as a percentage of the space's current capacity.O: Old space utilization as a percentage of the space's current capacity.M: Metaspace utilization as a percentage of the space's current capacity.CCS: Compressed class space utilization as a percentage.YGC: Number of young generation GC events.YGCT: Young generation garbage collection time.FGC: Number of full GC events.FGCT: Full garbage collection time.GCT: Total garbage collection time.
这个命令的输出结果如下: S0S1EOMCCSYGC YGCT FGCFGCTGCT89.70 0.00 81.26 74.27 95.68 91.76 40 2.444 140.7153.159
在本文中 , 最重要的参数是 GC 事件( YGC 和 FGC )次数和收集时间( YGCT 和 FGCT ) 。
- 手机大魔王用权限管理来保护你的隐私安全,安卓手机安装APP后先别打开
- 印度尼西亚:又一场对峙在南海上演,双方直接打开雷达照射,再不阻止就晚了
- 手机大魔王安卓手机安装APP后先别打开,用权限管理来保护你的隐私安全
- 清华大学@?女儿690分上清华,父母无意间打开角落的铁盒后,瞬间眼泪夺眶而出
- :最温暖的光!男孩在公交晚班车上赶作业,车长打开所有灯为其照亮
- 绿青网“新基建”来袭!综合能源服务打开新商机
- 新国货逆袭出圈 天猫国潮来了诠释品牌跨界的正确打开方式
- 「安徽」巨量打开涨停板,后市面临风险,卖出!
- [印度尼西亚]又一场对峙在南海上演,双方直接打开雷达照射,再不阻止就晚了
- 刘潇潇说财经| 高力国际邓懿君:疫情下逆势打开的投资窗口期,关注这三类,国是访问