美文网首页
2020-09-23-- 第四章---虚拟机性能监控与故障处理工

2020-09-23-- 第四章---虚拟机性能监控与故障处理工

作者: 李霖神谷 | 来源:发表于2020-09-23 16:36 被阅读0次

    1.虚拟机进程状况工具:

    • jps命令行工具:
      jps是jdk提供的一个查看当前java进程的小工具, 可以看做是JavaVirtual Machine Process Status Tool的缩写。
      示例:
      jps –l:输出主类或者jar的完全路径名:


      image.png

    jps –v :输出jvm参数:


    image.png
    • jstat:虚拟机统计信息监视工具:
      是用于监视虚拟机各种运行状态信息的命令行工具。它可以显示本地或远程[插图]虚拟机进程中的类装载、内存、垃圾收集、JIT编译等运行数据,在没有GUI图形界面,只提供了纯文本控制台环境的服务器上,它将是运行期定位虚拟机性能问题的首选工具。

      假设需要每250毫秒查询一次进程2764垃圾收集的状况,一共查询20次,那命令应当是:
      jstat -gc 12008 250 20


      image.png

    S0C:第一个幸存区的大小
    S1C:第二个幸存区的大小
    S0U:第一个幸存区的使用大小
    S1U:第二个幸存区的使用大小
    EC:伊甸园区的大小
    EU:伊甸园区的使用大小
    OC:老年代大小
    OU:老年代使用大小
    MC:方法区大小
    MU:方法区使用大小
    CCSC:压缩类空间大小
    CCSU:压缩类空间使用大小
    YGC:年轻代垃圾回收次数
    YGCT:年轻代垃圾回收消耗时间
    FGC:老年代垃圾回收次数
    FGCT:老年代垃圾回收消耗时间
    GCT:垃圾回收消耗总时间

    堆内存统计:
    jstat -gccapacity 12008

    image.png

    NGCMN:新生代最小容量
    NGCMX:新生代最大容量
    NGC:当前新生代容量
    S0C:第一个幸存区大小
    S1C:第二个幸存区的大小
    EC:伊甸园区的大小
    OGCMN:老年代最小容量
    OGCMX:老年代最大容量
    OGC:当前老年代大小
    OC:当前老年代大小
    MCMN:最小元数据容量
    MCMX:最大元数据容量
    MC:当前元数据空间大小
    CCSMN:最小压缩类空间大小
    CCSMX:最大压缩类空间大小
    CCSC:当前压缩类空间大小
    YGC:年轻代gc次数
    FGC:老年代GC次数

    • jmap:(Memory Map for Java)用于生成堆转储快照,即Dump文件;还能查询finalize执行队列、java堆和永久代详细信息,比如空间使用率、当前用的是哪种收集器等。
      *jstasck:用于生成虚拟机当前时刻的线程快照(一般称为threaddump或javacore文件)。线程快照就是当前虚拟机内每一条线程正在执行的方法堆栈的集合,生成线程快照的主要目的是定位线程出现长时间停顿的原因,如线程间死锁、死循环、请求外部资源导致的长时间等待等都是导致线程长时间停顿的常见原因。

    jdk可视化工具:
    JDK中除了提供大量的命令行工具外,还有两个功能强大的可视化工具:JConsole和VisualVM,这两个工具是JDK的正式成员,没有被贴上“unsupported andexperimental”的标签。

    *JConsole:
    它是一款基于JMX的可视化监视和管理的工具。直接在jdk bin目录下启动JConsole程序


    image.png image.png

    通过下面代码对内存进行监控。

    package com.shuai.Util;
    
    import java.util.ArrayList;
    import java.util.List;
    
    public class TestGc2 {
        static  public  class  OMG{
            public  byte[] I=new byte[64*1024];
        }
        public  static void  fillHeap(int num)throws  Exception {
            List<OMG> omgList =new ArrayList<>();
            for (int i=0;i<num;i++){
                Thread.sleep(50);
                omgList.add(new OMG());
            }
            System.gc();
        }
    
        public static void main(String[] args) throws  Exception{
            fillHeap(1000);
        }
    
    }
    
    

    *VisualVM:多合一故障处理工具:
    VisualVM基于NetBeans平台开发,因此它一开始就具备了插件扩展功能的特性,通过插件扩展支持,VisualVM可以做到:□ 显示虚拟机进程及进程的配置和环境信息(jps、jinfo)。

    1. 监视应用程序的CPU、GC、堆、方法区及线程的信息(jstat、jstack)。
    2. dump及分析堆转储快照(jmap、jhat)。
    3. 方法级的程序运行性能分析,找出被调用最多、运行时间最长的方法。
    4. 离线程序快照:收集程序的运行时配置、线程dump、内存dump等信息建立一个快照,可以将快照发送开发者处进行Bug反馈。

    相关文章

      网友评论

          本文标题:2020-09-23-- 第四章---虚拟机性能监控与故障处理工

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