美文网首页
JVM参数调试实战

JVM参数调试实战

作者: spring_coderman | 来源:发表于2019-12-15 09:41 被阅读0次

    JVM基础参数配置简介

    jvm基础参数.png

    标准选项(cmd下 输入java 即可打印所有标准选项)
    X选项也叫非标准选项(cmd下输入java -X 即可打印所有非标准选项)
    XX选项(cmd下输入java -XX:+PrintFlagsInitial -version,即可打印所有XX选项的默认值)
    本次分享主要就是说基于HotSpot JVM平台,讲这三类JVM参数,其中还会演示一些工具平台的使用

    标准选项-verbose.png JVM运行模式.png JVM常用X选项.png

    有时候输出并不是以X选项的模式输出的,而是以XX选项输出的,值的单位一般为KB

    JVM编译.png

    指定JIT编译器模式
    Java是一种解释型语言,但随着JIT技术的进步,它能在运行时将Java的字节码编译成本地代码。以下是几个相关的选项:
    -Xint表示禁用JIT,所有字节码都被解释执行,这个模式的速度最慢的(字节码->机器码)。
    -Xcomp表示所有字节码都首先被编译成本地代码(即机器码),然后再执行。
    -Xmixed,默认模式,让JIT根据程序运行的情况,有选择地将某些代码编译成本地代码。
    -Xcomp和-Xmixed到底谁的速度快,针对不同的程序可能有不同的结果,基本还是推荐用默认模式。

    JVM进阶参数配置简介

    XX选项.png

    -XX:+PrintFlagsFinal:所有XX参数的默认值
    and -XX:+PrintFlagsInitial 查看所有JVM参数启动的初始值
    -XX:+UnlockExperimentalVMOptions
    -XX:+UnlockDiagnosticVMOptions
    -XX:+PrintCommandLineFlags 所有跟最初的默认值不同的参数及它们的值

    堆区配置.png

    -XX:MaxTenuringThreshold
    -XX:MaxTenuringThreshold只对串行回收器和ParNew有效,对ParallGC无效。存活次数在串行和ParNew方式中可通过-XX:MaxTenuringThreshold来设置,ParallelScavenge则根据运行状态来决定。
    -XX:PretenureSizeThreshold
    -XX:PretenureSizeThreshold,设置大对象直接进入年老代的阈值。-XX:PretenureSizeThreshold只对串行回收器和ParNew有效,对ParallGC无效。默认该值为0,即不指定最大的晋升大小,一切由运行情况决定。

    非堆配置.png

    https://blog.csdn.net/qq_33301113/article/details/67071632
    https://www.jianshu.com/p/7ab3e3a6562e

    元空间配置.png

    1、字符串存在永久代中,容易出现性能问题和内存溢出。
    2、类及方法的信息等比较难确定其大小,因此对于永久代的大小指定比较困难,太小容易出现永久代溢出,太大则容易导致老年代溢出。
    3、永久代会为 GC 带来不必要的复杂度,并且回收效率偏低。
    4、Oracle 可能会将HotSpot 与 JRockit 合二为一。

    GC收集器总览.png GC配置.png

    http://www.ityouknow.com/jvm/2017/08/29/GC-garbage-collection.html

    CMS垃圾收集器配置.png

    第二,三,四的参数对于CMS的标记过程比较慢的时候可以起到一定的缓解作用

    G1垃圾收集器配置.png GC打印.png

    高级参数&调试工具

    下面介绍一些平时不怎么遇到的参数,以及如果出现相关的问题,可以通过JVM参数去跟踪调试,优化

    高级GC配置.png

    GC相关的配置,其实还不止这些,这里再给大家介绍两个 -Xloggc:D:/CMSgc.log,-XX:+UseGCLogFileRotation(按GC日志大小切分日志信息)但是大多数情况下这些基本够用

    代码缓存.png 编译与跟踪.png JVM自带工具&调试命令.png 其他JVM工具与网站.png

    总结

    以上为内部分享部分资料,其实还有很多内容没有说到,抛砖引玉吧
    https://www.jianshu.com/p/86e358afdf17
    https://www.cnblogs.com/aspirant/p/8663872.html

    相关文章

      网友评论

          本文标题:JVM参数调试实战

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