<!-- more -->
标记,标记之前内容为摘要
<!-- more -->
标记,标记之前内容为摘要
<!-- more -->
标记,标记之前内容为摘要
JConsole(Java Monitoring and Management Console)是一种基于JMX的可视化监视、管理工具。它管理部分的功能是针对 JMX MBean 进行管理,由于 MBean 可以使用代码、中间件服务器的管理控制台或者所有符合 JMX 规范的软件进行访问。
jhat(JVM Heap Analysis Tool) 主要是为了和 jmap 搭配使用,来分析 jmap 生成的转储快照。jhat 内置了一个微型的 HTTP/HTML 服务器,生成 dump 文件的分析结果后,可以在浏览器中查看。不过在实际工作中,一般都不会去直接使用 jhat 命令来分析 dump 文件。
jinfo(Configuration Info for Java)的作用是实时地查看和调整虚拟机各项参数。使用 jps -v
命令参数可以查看虚拟机启动时显式指定的参数列表,如果想知道未被显式指定的参数的系统默认值,除了去找资料外,还可以使用 jinfo -flag
命令进行查询。
jmap(Memory Map for Java) 命令用于生成堆转储快照(一般称为 heapdump 或 dump 文件)。目前获取 Java 堆转储快照的方式有以下几种:
jps(JVM Process Status Tool)与 UNIX 的 ps 命令类似:可以列出正在运行的虚拟机进程,并显示虚拟机执行主类(Main Class,main()函数所在的类)名称以及这些进程的本地虚拟机唯一 ID(Local Virtual Machine Identifier,LVMID)。虽然功能比较单一,但它是使用频率最高的 JDK 命令行工具,因为其他的 JDK 工具大多需要输入它查询到的 LVMID 来确定要监控的是哪一个虚拟机进程。对于本地虚拟机进程来说,LVMID 与操作系统的进程 ID(Process Identifier,PID)是一致的,使用 Windows 的任务管理器或者 UNIX 的 ps 命令也可以查询到虚拟机进程的 LVMID ,但如果同时启动了多个虚拟机进程,无法根据进程名称定位时,那就只能依赖 jps 命令显示主类的功能才能区分了。
jstack(Stack Trace for Java)命令用于生成虚拟机当前时刻的线程快照(一般称为 threaddump 或者 javacore 文件)。线程快照就是当前虚拟机内每一条线程正在执行的方法堆栈的集合,生成线程快照的主要目的是定位线程出现长时间停顿的原因,如线程间死锁、死循环、请求外部资源导致的长时间等待等都是导致线程长时间停顿的常见原因。线程出现停顿的时候通过 jstack 来查看各个线程的调用堆栈,就可以知道没有响应的线程到底在后台做些什么事情,或者等待着什么资源。
jstat(JVM Statistics Monitoring Tool)是用于监视虚拟机各种运行状态信息的命令行工具。它可以显示本地或者远程虚拟机进程中的类装载、内存、垃圾收集、JIT 编译等运行数据。