• 深入理解JVM(③)虚拟机性能监控、故障处理工具


    前言

    JDK的bin目录中有一系列的小工具,除了java.exe、javac.exe这两个编译和运行Java程序外,还有打包、部署、签名、调试、监控、运维等各种场景都会用到这些小工具。

    这些工具根据软件可用性和授权的不同,可以把它们划分为三类:

    • 商业授权工具: 主要是JMC(Java Mission Control)及它要使用到的JFR(Java Flight Recorder),JMC在个人开发环境中使用是免费的,但是在商业环境中使用它则是付费的。
    • 正式支持工具: 这一类工具属于被长期支持的工具,不同平台、不同版本的JDK之间,这类工具可能会略有差异,但是不会出现某一个工具突然消失的情况。
    • 实验性工具: 这一类工具在它们的使用说明中被声明为“没有技术支持,并且是实验性质的”(Unsupported and Experimental)产品,日后可能会转载,也可能会在某个JDK版本中国无声无息地消失。

    jps:虚拟机进程状态工具

    JDK的一些小工具都参考了UNIX的命名方式,jps(JVM Process Status Tool)是其中的典型。
    功能也是和UNIX的ps的命令类似:
    可以列出正在运行的虚拟机进程,并显示虚拟机执行主类(Main Class,main()函数所在的类)名称以及这些进程的本地虚拟机唯一ID(LVMID,Local Virtual Machine Identifier)。
    jps命令格式:

    jps [ options ]  [ hostid ]
    

    jps工具主要选项:
    在这里插入图片描述

    jstat:虚拟机统计信息监视工具

    jstat( JVM Statistics Monitoring Tool )是用户监视虚拟机各种运行状态信息的命令行工具。可以显示本地虚拟机进程中 类加载、内存、垃圾收集、即时编译等运行时数据,这个命令是在服务器是哪个运行期定位虚拟机性能问题的常用工具。
    jstat 命令格式为:

    jstat [ option  vmid [ interval [ s | ms ] [ count ] ] ]
    

    参数interval 和 count 代表查询间隔和次数,如果省略这2个参数,说明只查询一次假设需要每250毫秒查询一次进程 1440 垃圾收集状况,一共查询20次,那命令应当是:

    jstat -gc 1440 250 20 
    

    option 代表用户希望查询的虚拟机信息,主要分三类:
    类加载、垃圾收集、运行期间编译状况。
    jstat工具主要选项
    jstat主要选项

    jinfo:Java配置信息工具

    jinfo(Configuration Info for Java)的作用是实时查看和调整虚拟机各项参数。使用jps命令的-v参数可以查看虚拟机启动时显示指定的参数列表,但如果想知道未被显示指定的参数的系统默认值,除了去找资料外,就只能使用jinfo的-flag选项进行查询了。jinfo还可以使用-sysprops选项把虚拟机进程的

    System.getProperties()
    

    的内容打出来。
    jinfo 命令格式:

    jinfo [ option ] pid
    

    jmap:Java内存映像工具

    jmap (Memory Map for Java)命令用于生成堆转储快照(一般称为heapdump 或 dump文件)。
    jmap的作用并不仅仅是为了获取堆转储快照,它还可以查询finalize执行队列、Java堆和方法区的详细信息,如空间使用率、当前用的是哪种收集器等。
    jmap 命令格式:

    jmap [ option ] vmid
    

    jmap工具主要选项
    jmap工具主要选项

    jhat:虚拟机堆转储快照分析工具

    JDK提供jhat(JVM Heap Analysis Tool)命令与jmap搭配使用,来分析jmap生成的堆转储快照。jhat内置了一个微型的HTTP/Web服务器,生成堆转储快照的分析结果后,可以在浏览器中查看。但是一般在实际工作中,都不会直接使用jhat命令来分析堆转储快照文件,一是因为分析工作耗时而且极为耗费资源,一般不会直接在服务器上使用,而是在其他机器上进行分析。二是jhat的分析功能比较简陋,不如VisualVM,以及一些专业的分析工具例如:Eclipse Memory Analyzer、IBM HeapAnalyzer。

    jstack:Java堆栈跟踪工具

    jstack(Stack Trace for Java)命令用于生成虚拟机当前时刻的线程快照(一般称为threaddump或者javacore文件)。
    线程快照就是当前虚拟机内每一条线程正在执行的方法堆栈的集合,生成线程快照的目的通常是定位线程出现长时间停顿的原因,如线程死锁、死循环、请求外部资源导致长时间挂起等,都是导致线程长时间停顿的常见原因。
    jstack命令格式:

    jstack [ option ] vmid 
    

    线程出现停顿时通过jstack来查看各个线程的调用堆栈,就可以获知没有响应的线程到底在后头做些什么事情,或者等待着什么资源。
    jstack工具主要选项
    jstack工具主要选项

  • 相关阅读:
    WPF 本地化语言设置
    WPF 调节树状图滚动条值
    WPF中ListBox的使用注意事项
    SQL 树状结构表中查出所所有父级/子级
    Vue创建
    wpf 控件注意事项
    链表习题(1)-设计一个递归算法,删除不带头结点的单链表L中所有值为x的结点
    排序-快速排序
    排序-堆排序
    图-图的遍历
  • 原文地址:https://www.cnblogs.com/jimoer/p/13179598.html
Copyright © 2020-2023  润新知