zoukankan      html  css  js  c++  java
  • JVM学习--jvm监控和故障处理工具

    java虚拟机性能监控常用命令

    Sun JDK监控和故障处理命令有jps、jstat、jinfo、jmap、jhat、jstack 。

    1.jps

    jps:JVM Process Status Tool,显示指定系统内所有的HotSpot虚拟机进程。

    jps命令格式:
    jps [options] [hostid]
    
    option参数:
    -l : 输出主类全名或jar路径
    -q : 只输出LVMID
    -m : 输出JVM启动时传递给main()的参数
    -v : 输出JVM启动时显示指定的JVM参数

    其中[option]、[hostid]参数也可以不写。

     常使用用命令如下:

    jps -l -m 显示系统中虚拟机进程pid号与启动的main参数等信息

    2.jstat

    jstat(JVM statistics Monitoring)是用于监视虚拟机运行时状态信息的命令,它可以显示出虚拟机进程中的类装载、内存、垃圾收集、JIT编译等运行数据

    jstat命令格式:
    
    jstat [option] LVMID [interval] [count]
    
    参数:
    [option] : 操作参数
    LVMID : 本地虚拟机进程ID
    [interval] : 连续输出的时间间隔
    [count] : 连续输出的次数

      option 参数总览

    Option参数说明
    class class loader的行为统计。Statistics on the behavior of the class loader.
    compiler HotSpt JIT编译器行为统计。Statistics of the behavior of the HotSpot Just-in-Time compiler.
    gc 垃圾回收堆的行为统计。Statistics of the behavior of the garbage collected heap.
    gccapacity 各个垃圾回收代容量(young,old,perm)和他们相应的空间统计。Statistics of the capacities of the generations and their corresponding spaces.
    gcutil 垃圾回收统计概述。Summary of garbage collection statistics.
    gccause 垃圾收集统计概述(同-gcutil),附加最近两次垃圾回收事件的原因。Summary of garbage collection statistics (same as -gcutil), with the cause of the last and
    gcnew 新生代行为统计。Statistics of the behavior of the new generation.
    gcnewcapacity 新生代与其相应的内存空间的统计。Statistics of the sizes of the new generations and its corresponding spaces.
    gcold 年老代和永生代行为统计。Statistics of the behavior of the old and permanent generations.
    gcoldcapacity 年老代行为统计。Statistics of the sizes of the old generation.
    gcpermcapacity 永生代行为统计。Statistics of the sizes of the permanent generation.
    printcompilation HotSpot编译方法统计。HotSpot compilation method statistics.

    常使用的命令:

    jstat -gc (垃圾回收堆的行为统计).如下:

    C即Capacity 总容量,U即Used 已使用的容量

    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 : 垃圾回收总消耗时间

     jstat -gc 9628 2000 5 这个命令的意思是每个2秒输出一次进程号为9628的虚拟机进程的gc信息。如下:

     3.jmap

    jmap(JVM Memory Map)命令用于生成heap dump文件,如果不使用这个命令,还阔以使用-XX:+HeapDumpOnOutOfMemoryError参数来让虚拟机出现OOM的时候·自动生成dump文件。jmap不仅能生成dump文件,还可以查询finalize执行队列、Java堆和永久代的详细信息,如当前使用率、当前使用的是哪种收集器等。

    命令格式:
    
    jmap [option] LVMID
    
    option参数:
    dump : 生成堆转储快照
    finalizerinfo : 显示在F-Queue队列等待Finalizer线程执行finalizer方法的对象
    heap : 显示Java堆详细信息
    histo : 显示堆中对象的统计信息
    permstat : to print permanent generation statistics
    F : 当-dump没有响应时,强制生成dump快照

    常使用命令:

    jmap -dump:live,format=b,file=dump.hprof vmid,(dump堆到文件,format指定输出格式,live指明是活着的对象,file指定文件名)如下:

    jmap -heap vmid (显示java堆详细信息,如使用哪种回收器,参数配置,分代情况等),如下:

     

    4.jstack

    jstack,java堆栈跟踪工具,用于生成虚拟机当前时刻的线程快照,一般称为threaddump.线程快照即虚拟机内每一条线程正在执行的方法堆栈的集合。生成线程快照的主要目的是定位线程出现长时间停顿的原因,如线程间死锁、死循环、请求外部资源导致的长时间等待等。 线程出现停顿的时候通过jstack来查看各个线程的调用堆栈,就可以知道没有响应的线程到底在后台做什么事情,或者等待什么资源。

    命令格式
    jstack [option] LVMID
    
    option参数
    -F : 当正常输出请求不被响应时,强制输出线程堆栈
    -l : 除堆栈外,显示关于锁的附加信息
    -m : 如果调用到本地方法的话,可以显示C/C++的堆栈

    常使用命令:

     jstack -l LVMID 如下:

  • 相关阅读:
    指数
    汉诺塔问题
    只用递归和当前的栈实现栈的逆序
    让你996的不是你的老板,而是其他愿意996的人
    luke towan
    2020-9-3
    2020-9-3
    springboot注解
    2020-9-2
    20200827
  • 原文地址:https://www.cnblogs.com/liupiao/p/9418426.html
Copyright © 2011-2022 走看看