美文网首页
jvm性能调优

jvm性能调优

作者: simon_kin | 来源:发表于2021-02-10 09:34 被阅读0次

JVM参数类型

  • 标准参数
    标准参数不随着JDK版本变化而变化.
    -help -server -client
    -version -showversion
    -cp -classpath

  • X参数
    非标准化参数(在各个JDK版本中可能会变,但是变动比较小)
    -Xint : 解释执行
    -Xcomp : 编译执行 第一次使用就编译成本地代码
    -Xmixed : 混合模式 JVM自己来决定是否编译成本地代码

  • XX参数
    非标准化参数主要用于JVM调优和Debug
    Boolean类型 :
    -XX:+UseG1GC([+]号代表启用,[-]代表禁用)
    -XX:+UseConcMarkSweepGC
    Key-value类型:
    -XX:MaxGcPauseMillis=500
    -XX:GCTimeRatio=19

JDK工具

  • jps

    jps -q
    jps -mlv

  • jinfo
    语法: jinfo [option] <pid>

    jinfo -flags pid 打印虚拟机参数(包含使用哪种垃圾回收器)
    jinfo -sysprops pid 打印系统参数

    启动GC输出
    jinfo -flag +PrintGC pid
    jinfo -flag +PrintGCDetails pid
    jinfo -flag +PrintGCTimeStamps pid
    jinfo -flag +PrintGCDateStamps pid

       jinfo -flag MaxHeapFreeRatio=80 
          注:并不是所有的参数都支持动态修改
    
  • jstat
    语法: jstat [option] <pid>

    option
    -gc -gcutil
    -gccapacity -gccause -gcmetacapacity
    -gcnew -gcnewcapacity -gcold -gcoldcapacity

  • jstack
    cpu高使用
    top 查询占用cpu进程
    jstack pid> txt 导出堆栈信息
    top -p pid -H 查询占用cpu线程
    printf "%x" 8247 (10 转16)
    注:jstack -l pid 慎用

  • jmap
    内存泄漏 jmap -dump:format=b,file=heap.hprof <pid>
    mat 分析工具

  • jconsole

  • jvisualvm

    远程调用
    nohup java -jar -Dcom.sun.management.jmxremote -
    Dcom.sun.management.jmxremote.port=12000 -
    Dcom.sun.management.jmxremote.authenticate=false -
    Djava.net.preferlPv4Stack=true -
    Dcom.sun.management.jmxremote.ssl=false -
    Djava.rmi.server.hostname=10.18.2.139 demo.jar -spring.profiles.active=test &

远程调试

debug.png

常见问题分析

  • cpu飙升
    top
    jstack pid> txt
    top -p pid -H
    printf "%x" 8247 (10 转16)
  • 内存泄漏
    jmap -dump:format=b,file=heap.hprof <pid>
    mat 分析工具

  • 死锁
    jconsole
    jvisualvm
    jstack

相关文章

网友评论

      本文标题:jvm性能调优

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