美文网首页Java相关
JVM - 调优命令

JVM - 调优命令

作者: 万福来 | 来源:发表于2020-04-02 16:19 被阅读0次

    JVM - 调优命令

    jps

    显示指定系统内所有jvm进程信息
    命令格式:jps [options] [hostid]
    option参数

    • -l:输出主类全名或jar路径
    • -q:只输出进程ID
    • -m:输出启动JVM时传递给main函数的参数
    • -v:输出JVM启动时显示指定的JVM参数

    jstat

    用户监视JVM运行时状态信息的命令,可以显示出JVM的类加载、内存、垃圾收集、JIT编译等运行数据。
    命令格式:jstat [option] 进程ID [interval] [count]
    参数描述

    • [option] : 操作参数
    • [interval] : 连续输出的时间间隔
    • [count] : 连续输出的次数
      option 参数
    • -class:监视类装载、卸载数量、总空间以及耗费的时间
    • -compiler:输出JIT编译过的方法数量耗时等
    • -gc:垃圾回收堆的行为统计; jstat -gc 1262 2000 20 ;每隔2000ms输出1262的gc情况,一共输出20次。
    S0C : survivor0区的总容量
    S1C : survivor1区的总容量
    S0U : survivor0区已使用的容量
    S1C : survivor1区已使用的容量
    EC : Eden区的总容量
    EU : Eden区已使用的容量
    OC : Old区的总容量
    OU : Old区已使用的容量
    PC 当前perm的容量 (KB)
    PU perm的使用 (KB)
    YGC : 新生代垃圾回收次数
    YGCT : 新生代垃圾回收时间
    FGC : 老年代垃圾回收次数
    FGCT : 老年代垃圾回收时间
    GCT : 垃圾回收总消耗时间
    
    • -gccapacity:同-gc,不过还会输出Java堆各区域使用到的最大、最小空间

    • -gcutil:同-gc,不过输出的是使用空间占总空间的百分比

    • -gccause:同-gcutil,附加最近两次垃圾回收事件的原因
      LGCC:最近垃圾回收的原因
      GCC:当前垃圾回收的原因

    • -gcnew:统计新生代的行为
      TT:提升阈值,MTT:最大提升阈值,DSS:survivor区域大小

    • -gcnewcapacity:新生代与其相应的内存空间的统计

    • -gcold:统计老年代的行为

    • -gcoldcapacity:统计老年代的大小和空间

    • -gcpermcaoacuty:统计持久代的行为

    • -printcomplation jit编译方法统计
      Compiled:被执行的编译任务的数量
      Size:方法字节码的字节数
      Type:编译类型
      Method:编译方法的类名和方法名。类名使用"/" 代替 "." 作为空间分隔符. 方法名是 给出类的方法名. 格式是一致于HotSpot - XX:+PrintComplation 选项

      jmap

      jmap(JVM Memory Map)命令用于生成heap dump文件,如果不使用这个命令,还阔以使用-XX:+HeapDumpOnOutOfMemoryError参数来让虚拟机出现OOM的时候·自动生成dump文件。 jmap不仅能生成dump文件,还阔以查询finalize执行队列、Java堆和永久代的详细信息,如当前使用率、当前使用的是哪种收集器等。
      命令格式:jmap [option] 进程ID
      option参数
      dump : 生成堆转储快照
      finalizerinfo : 显示在F-Queue队列等待Finalizer线程执行finalizer方法的对象
      heap : 显示Java堆概要信息,GC使用的算法,heap的配置及wise heap的使用情况
      histo : 打印堆的对象统计,包括对象数、内存大小等等 (因为在dump:live前会进行full gc,如果带上live则只统计活对象,因此不加live的堆大小要大于加live堆的大小 )
      permstat : 打印Java堆内存的永久保存区域的类加载器的智能统计信息。对于每个类加载器而言,它的名称、活跃度、地址、父类加载器、它所加载的类的数量和大小都会被打印。此外,包含的字符串数量和大小也会被打印
      F : 当-dump没有响应时,强制生成dump快照

    jhat

    jhat(JVM Heap Analysis Tool)命令是与jmap搭配使用,用来分析jmap生成的dump,jhat内置了一个微型的HTTP/HTML服务器,生成dump的分析结果后,可以在浏览器中查看。在此要注意,一般不会直接在服务器上进行分析,因为jhat是一个耗时并且耗费硬件资源的过程,一般把服务器生成的dump文件复制到本地或其他机器上进行分析。
    命令格式:jhat [dumpfile]

    jstack

    jstack用于生成java虚拟机当前时刻的线程快照。线程快照是当前java虚拟机内每一条线程正在执行的方法堆栈的集合,生成线程快照的主要目的是定位线程出现长时间停顿的原因,如线程间死锁、死循环、请求外部资源导致的长时间等待等。 线程出现停顿的时候通过jstack来查看各个线程的调用堆栈,就可以知道没有响应的线程到底在后台做什么事情,或者等待什么资源。 如果java程序崩溃生成core文件,jstack工具可以用来获得core文件的java stack和native stack的信息,从而可以轻松地知道java程序是如何崩溃和在程序何处发生问题。另外,jstack工具还可以附属到正在运行的java程序中,看到当时运行的java程序的java stack和native stack的信息, 如果现在运行的java程序呈现hung的状态,jstack是非常有用的。
    命令格式:jstack [option] 进程ID
    option参数
    -F : 当正常输出请求不被响应时,强制输出线程堆栈
    -l : 除堆栈外,显示关于锁的附加信息
    -m : 如果调用到本地方法的话,可以显示C/C++的堆栈

    jinfo

    jinfo(JVM Configuration info)这个命令作用是实时查看和调整虚拟机运行参数。 之前的jps -v口令只能查看到显示指定的参数,如果想要查看未被显示指定的参数的值就要使用jinfo口令
    命令格式:jinfo [option] [args] 进程ID
    option参数
    -flag : 输出指定args参数的值
    -flags : 不需要args参数,输出所有JVM参数的值
    -sysprops : 输出系统属性,等同于System.getProperties()

    相关文章

      网友评论

        本文标题:JVM - 调优命令

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