[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 ) 。
推荐阅读
- 小炮百科|路由器上有个“提速”开关!不打开,难怪“百兆宽带”变龟速
- 村夫|手机忘记密码怎么解锁?先不用去刷机,按这两个键多半能打开
- 狂丸科学|在微信里打开外文网页,用这个办法就能一键翻译成中文
- 技术大威|学会它,处理word中的表格轻而易举,不用再打开Excel折腾了
- 『无法打开』苹果重新推送大量 iOS 应用更新,解决无法打开的 Bug
- 「」iOS 13新bug,无法打开App!你遇到过吗?
- 【屏幕,无法打开】苹果6屏幕破裂,水无法打开,请问有什么好方法吗?
- 超广角一加8 Pro入手两周:我发现了超广角镜头的「正确打开方式」
- 空间@打开四倍增长空间,出海军团里还有这样的实力派
- DHHBasecamp创始人谈远程办公的正确打开方式