<
>

IntelliJ IDEA卡死,如何优化内存

2020-05-11 09:50:35 来源:易采站长站 作者:于丽

本文作者在和同事的一次讨论中发现,对 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 -gcutil

jstat 是 JDK 自带的工具,主要利用 JVM 内建的指令对 Java 应用程序的资源和性能进行实时的命令行监控,还包括对 Heap size 和垃圾回收状况的监控。

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. 

              
暂时禁止评论

微信扫一扫

易采站长站微信账号