IDEA jvm 调优

IDEA jvm 调优_第1张图片

IDEA jvm 调优_第2张图片

 

 

问题描述:内存8G,电脑开久IDEA了就卡,刚打卡项目也很卡。

 

下载VisualVm和VisualGc插件

IDEA jvm 调优_第3张图片

原始参数:

-Xms 堆初始化大小:512m 这里还是会慢慢扩容 可以使用

# 强制JVM在启动时申请到足够的堆内存(否则IDEA启动时堆初始大小不足512m)

#-XX:+AlwaysPreTouch

-Xmx: 堆最大1024m

最后那句-Dcom就是开启JMX监控

 

 

打开JMX监控

 

 

IDEA jvm 调优_第4张图片

分析:

垃圾收集耗时:2.489s 75次 其中

fullGC:触发8次,459.135ms,

MinorGc:触发67次,1.981s

最后一次是因为(MinorGC后存活对象大于每次minorGC后平均值)空间担保失败

JIT 30.249s

1024M堆内存,新生代:332.75 老年代:691.25

EDEN: 266.25M

S0:33.25

S1:33.25

OLD:691.25

元空间(跟方法区差不多):1.256G

 

 

调优思路: 降低元空间最大size,无需这么多

降低新生代GC,增加新生代空间。

老年代可以多开几个项目看看需要多少,由于我很多原因是内存爆满导致很卡,所以我设置成了

年轻代与老年代比例为1:2,老年代无需那么多空间。

 

JVM参数

-server

# 堆初始值占用3G,意味着IDEA启动即分配3G内存

-Xms2048m

# 堆最大值占用3G

-Xmx2048m

# 年轻代与老年代比例为1:2(默认值是1:4),降低年轻代的回收频率

-XX:NewRatio=2

# 3 表示2:3 占5分之1

-XX:SurvivorRatio=3

#降低元空间

-XX:MaxMetaspaceSize=800m

#保留代码占用的内存容量 默认48

-XX:ReservedCodeCacheSize=1024m

#增大软引用在JVM中的存活时长(堆空闲空间越大越久)

-XX:SoftRefLRUPolicyMSPerMB=50

#更换CMS收集器

-XX:+UseConcMarkSweepGC

-ea

-Dsun.io.useCanonCaches=false

-Djava.net.preferIPv4Stack=true

-XX:+HeapDumpOnOutOfMemoryError

-XX:-OmitStackTraceInFastThrow

-Dcom.sun.management.jmxremote

 

IDEA jvm 调优_第5张图片

调优效果

垃圾收集耗时:1.918s 26次 其中

fullGC:触发6次,447.994ms,这里应该是IDEA手动调用system.gc(),可以看到内存是足够的,这里知道的读者可以补充一下,还可能是JVM自己手动触发的FullGC

MinorGc:触发20次,1.470s

-XX:ReservedCodeCacheSize=1024m 这个调大后,JIT编译代码放置在该区域,设置大该区域可以优化编译速度,也减少了GC次数

-XX:SoftRefLRUPolicyMSPerMB=50 增大软引用在JVM中的存活时长 减少GC次数

#更换CMS收集器

-XX:+UseConcMarkSweepGC 并发垃圾收集器 具体可以看下我JVM垃圾收集器的文章

 

 

 

 

 

你可能感兴趣的:(IDE)