深入理解Java虚拟机第四章 虚拟机性能监控与故障处理工具

本文介绍了JDK1.6中多种命令行监控工具,包括jps、jstat、jinfo、jmap、jhat和jstack的功能与使用方法,帮助开发者有效监控和诊断Java应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  1. 下面说明几种基于JDK 1.6的几种主要的命令行监控工具
  • jps – JVM Process Status Tool,显示指定系统内所有的HotSpot虚拟机进程

可以列出正在运行的虚拟机进程,并显示虚拟机执行主类(Main Class,main()函数所在的类)名称以及这些进程的本地虚拟机唯一ID(Local Virtual Machine Identifier,LVMID)。
jps命令格式为:jps [options][ hostid ],jps可以通过RMI协议查询开启了RMI服务的远程虚拟机进程状态,hostid为RMI注册表中注册的主机名,jps的其他常用选项见下图:

jps可选参数

  • jstat – JVM Statistics Monitoring Tool,用于收集HotSpot虚拟机各方面的运行数据

它可以显示本地或者远程虚拟机进程中的类装载、内存、垃圾收集、JIT编译等运行数据,命令格式为:jstat [option vmid [interval[s|ms] [count]] ],对于命令格式中的vmid与LVMID需要特别说明一下,如果是本地虚拟机进程,二者是一致的,如果是远程虚拟机进程,那格式应该是: [protocol:][//]lvmid[@hostname[:port]/servername],interval和count代表查询间隔和次数,如果忽略,说明只查询一次。
如果需要没250毫秒查询一次进程2764垃圾收集状况,一共查询20次,那命令应当是:jstat -gc 2764 250 20,下图是选项option:

jstat可选参数
jstat实例

  • jinfo – Configuration Info for Java,显示虚拟机配置信息
  • jmap – Memory Map for Java,生成虚拟机的内存转储快照(headdump文件)

和jinfo命令一样,jmap有不少功能在Windows平台下都是受限的,除了生成dump文件的-dump选项和用于查看每个类的实例、空间占用统计的-histo选项在所有操作系统都提供之外,其余选项都只在Linux/Solaris下使用
jmap命令格式:jmap [ option ] vmid,option选项合法值如下图:

jmap可选参数
jmap实例

  • jhat – JVM Heap Dump Browser,用于分析heapdump文件,它会建立一个HTTP/HTML服务器,让用户可以在浏览器上查看分析结果

与jmap搭配使用,不过实事求是地说,一般不直接使用jhat来分析dump文件,主要有两个原因:一是一般不会在部署应用程序的服务器上直接分析dump文件,即使可以这样做,也会尽量将dump文件复制到其他机器上进行,因为这个分析工作耗时而且消耗硬件资源;另一个原因是这个分析功能比较简陋,相比后文介绍的VisualVM,以及专业的Eclipse Memory Analyzer、IBM HeapAnalyzer等工具具有更强大更专业的分析功能。

  • jstack – Stack Trace for Java,显示虚拟机的线程快照

线程快照就是当前虚拟机内每一条线程正在执行的方法堆栈的集合,主要目的是定位线程出现长时间停顿的原因,如线程间死锁、死循环、请求外部资源导致的长时间等待。线程出现停顿的时候通过jstack来查看各个线程的调用堆栈,就可以知道没有相应的线程到底在后台做些什么事情,或者等待着什么资源。
jstack命令格式:jstack [ option ] vmid,如下图:

jstack可选参数

  1. JDK中bin目录的jconsole.exe是一个可视化管理内存、线程的工具
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值