美文网首页JVM
JVM性能调优【姿势大全】

JVM性能调优【姿势大全】

作者: 爪哇部落格 | 来源:发表于2019-06-17 21:16 被阅读6次

    当你想要进行JVM调优时,首先你要对自己的系统有清晰的认识,其次也要明确,调优并非万用的,需要视具体情况而定, 有时升级新版本的JDK带来的效果可能要比调优带来的效果更加显著;调优的过程也大致分为:确立目标,调试优化,结果验收

    JVM参数简介

    既然要调优,那我们需要对JVM参数有一定的认识,如下是我们常用一些参数:

    常用参数

    参数 示例 语义
    -XX:+PrintCommandLineFlags 输出启动参数
    -Xmxsize -Xmx1024m 最大堆大小
    -Xmssize -Xms512m 初始堆大小
    -Xmnsize -Xmn256m 新生代大小
    -Xsssize -Xss1m 线程栈大小
    -XX:MaxNewSize=size -XX:MaxNewSize=128m 最大新生代大小
    -XX:MetaspaceSize=size 元数据区大小
    -XX:MaxMetaspaceSize=size 最大元数据区大小
    -XX:TLABSize=size 线程缓存区大小
    -XX:NewRatio=ratio 默认2 占整个堆的1/(ratio+1)
    -XX:SurvivorRatio=ratio 默认8 占整个新生代的1/(ratio+1)
    -XX:MaxTenuringThreshold=Threshold 晋升到年龄大小
    -XX:PretenureSizeThreshold=Threshold Serial,ParNew有效 对象直接晋升大小阈值

    垃圾收集相关参数

    参数 示例 语义
    -verbose:gc -verbose:gc 显示每次GC的情况
    -Xloggc:filename -Xloggc:gc.log 将GC日志输出到gc.log文件
    -XX:+PrintGCDetails 输出GC详细信息
    -XX:+TraceClassLoading -XX:+TraceClassLoading 追踪类加载信息
    -XX:+TraceClassUnloading -XX:+TraceClassUnloading 追踪类卸载信息
    -XX:+HeapDumpOnOutOfMemoryError 内存溢出时输出dump文件
    -XX:+TLAB 默认开启 使用线程分配缓存区
    -XX:+UseParallelGC 使用Parallel收集器
    -XX:+UseG1GC 使用G1收集器
    -XX:+UseSerialGC 使用Serial收集器
    -XX:+UseParNewGC 使用ParNew收集器
    -XX:+UseConcMarkSweepGC 使用CMS收集器

    TIPS

    常用工具介绍

    工欲善其事必先利其器,利用JDK自带的一些工具起来,可以让我们定位问题的时候事半功倍。

    jmap 常用示例

    输出堆中各区使用情况

    • 示例: jmap -heap <pid>
    image.png

    输出堆快照

    • 示例: jmap -dump:live,format=b,file=heap.hprof <pid>

    jstat 常用示例

    以一定时间比例输出GC情况

    • 示例: jstat -gcutil <pid> <ms>
    jstat

    S0表示Survivor 0区占用比例
    S1表示Survivor 1区占用比例
    E 表示Eden区占用比例
    O 表示Old区占用比例
    M 表示Metaspace区占用比例
    CCS 表示压缩使用比例
    YGC 表示Young GC 次数
    YGCT 表示Young GC 耗时
    FGC 表示Full GC 次数
    FGCT 表示Full GC 耗时
    GCT 表示GC 总耗时

    jstack 常用示例

    输出线程快照

    • 示例: jstack <pid>

    jvisualvm

    jconsole

    GC日志识别

    前面我们介绍了一些参数,以及工具的使用,我们该如何去读GC日志呢?不同的垃圾收集器输出的日志,稍有差异,但其核心内容基本都大同小异。

    GC日志

    GC日志.jpg

    Full GC日志

    Full GC日志.jpg

    实战参考

    实战参考美团GC调优的过程

    相关文章

      网友评论

        本文标题:JVM性能调优【姿势大全】

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