美文网首页
IDEA启动JVM调优

IDEA启动JVM调优

作者: 噢是LJY | 来源:发表于2019-03-17 15:51 被阅读0次

    在未修改idea64.vmoptions时,默认配置为:

    -XX:ReservedCodeCacheSize=240m
    -XX:+UseConcMarkSweepGC
    -XX:SoftRefLRUPolicyMSPerMB=50
    -ea
    -Dsun.io.useCanonCaches=false
    -Djava.net.preferIPv4Stack=true
    -Djdk.http.auth.tunneling.disabledSchemes=""
    -XX:+HeapDumpOnOutOfMemoryError
    -XX:-OmitStackTraceInFastThrow
    

    发现以上配置在电脑上启动还是比较慢,使用以下命令查看GC情况如下。

    jstat -gcutil 24544 3000
    

    解释下这条命令的含义:24544为IDEA的PID,可以用jps命令工具看到,3000表示每隔3秒打印一次GC信息

    结果如下:


    image.png

    在这之前,先解释下图里的字母的含义:

    • S0、S1:两个Survivor区,E:Eden区,S0+S1+E代表新生代大小
    • O:老年代
    • M:Metaspace(元空间),其中存放永久代对象,相当于JDK7以及之前的PermGen,JDK8已经没有了PermGen Space的概念
    • CCS:压缩类空间,具体含义没研究过
    • YGC:Young(年轻代)GC次数,YGCT就是代表年轻代GC总时间
    • FGC:Full GC次数,同理FGCT则表示Full GC总时间
    • GCT:YGCT + FGCT的和

    看到以上数据被吓到了,YGC没一会就到了70几次,FGC有10几次,受不了,这影响到启动速度,而且默认的配置文件没有限定最小堆空间和元空间大小,所以导致空间不足而频繁GC.
    由于电脑是i7,16G内存,所以对JVM参数做了些调整,添加以下参数

    -Xms2048m // 限制堆最小2G
    -Xmx2048m // 限制堆最大2G
    -Xverify:none // 取消加载的字节码的安全性验证,IDEA加载的类我们可以认为是安全的,可以提高载入速度
    -XX:NewRatio=1 // 老年代与年轻代的比值为1:1
    -XX:SurvivorRatio=6 // Eden区与单个Survivor区的比值为6:1
    -XX:MetaspaceSize=512m // 元空间初始大小512M
    

    再次使用jstat工具观察,结果如下:


    image.png

    看来情况好多了,启动时间相比有了好几秒的提升

    相关文章

      网友评论

          本文标题:IDEA启动JVM调优

          本文链接:https://www.haomeiwen.com/subject/avjumqtx.html