醉鱼

V1

2022/11/22阅读:32主题:自定义主题1

JVM常用命令

阅读本文你可以学到以下命令的常规使用

    jps

    获取当前运行中java进程,

    示例:

    jps -lmv 可以打印详细信息
    -l 输出main类或jar的全限名,-m传入main方法的参数,-v传入jvm的参数
    

    jinfo

    使用 jinfo pid 可以查看当前进程系统属性信息以及进程启动jvm参数信息,jdk版本信息

    示例:jinfo pid
    

    jstat

    JVM统计检测工具

    示例:

    jstat -gc pid 1000 10 (打印pid的gc信息,每一秒打印一次,打印10次)
    
    jstat -gcutil pid 1000 10(打印pid的gc百分比信息,每一秒打印一次,打印10次)
    

    说明 C是容量(capacity),U是使用量(utilization)

    S0C survivor0区的容量
    
    S0U survivor0区的使用量
    
    S1C survivor1区的容量
    
    S1Usurvivor1区的使用量
    
    EC eden区的容量
    
    EU eden区的使用量
    
    OC old区的容量
    
    OU old区的使用量
    
    MC 元数据区容量
    
    MU 元数据区使用量
    
    CCSC 压缩的class空间容量
    
    CCSU 压缩的class空间使用量
    
    YGC 年轻代GC次数
    
    YGCT 年轻代GC总时间
    
    FGC Full GC 次数
    
    FGCT Full GC总时间
    
    GCT 垃圾收集总时间
    

    jmap

    打印堆内存配置和使用信息

    jmap -heap pid 
    
    

    看哪些类占用的空间最多

    jmap -histo pid
    

    dump 文件输出

    jmap -dump:format=b,file=xxxx.hprof pid 
    

    jstack

    -f 强制执行thread dump 可在进程卡死时使用,需要系统权限

    jstack -f pid
    
    

    -m 混合输出(mixed mode) 将java帧和native帧一起输出

    jstack -m pid
    
    

    -l 输出详细信息,长列表模式,打印相关的锁信息

    jstack -l pid
    
    

    jcmd

    查看信息

    可以使用 jcmd pid help 获取可以查看当前进程参数信息

    // 版本
    jcmd pid VM.version
    // 参数
    jcmd pid VM.flags
    // 启动命令
    jcmd pid VM.command_line
    // 系统参数
    jcmd pid VM.system_properties
    // 线程信息
    jcmd pid VM.Thread.print
    // GC 占用空间情况
    jcmd pid GC.class_histogram
    // GC 年轻代,老年代,元数据区信息
    jcmd pid GC.heap_info
    

    jrunscript/jjs

    • jrunscript

      当curl 用

      jrunscript -e "cat('http://www.baidu.com')"
      

      执行js命令

      jrunscript -e "print('hello zuiyu.jvm')"
      

      执行js文件

      jrunscript -l js -f /xx/xx/test.js
      
    • jjs

      交互控制台使用

      image-20220109215617800
      image-20220109215617800

    分类:

    后端

    标签:

    后端

    作者介绍

    醉鱼
    V1