最近在做性能测试,在性能调优过程中查阅了些虚拟机相关的知识,下面对虚拟机所用的性能监控的工具做个简单的介绍和汇总。
一、JDK命令行工具
1.jps:虚拟机进程状况工具
列出正在运行的虚拟机进程,显示虚拟机执行祝列的名称,已经这些进程的本地虚拟机的唯一ID。此命令虽然功能单一,但它是使用频率最高的JDK命令工具。
Jps 命令格式:
jps [options] [hostid]
2. jstat:虚拟机统计信息监视工具
jstat(JVM Statistics Monitoring Tool)是用于监视虚拟机各种运行状态信息的命令行工具。它可以显示本地或远程虚拟机进程中的类装载、内存、垃圾收集、JIT编译等运行数据。在没有GUI图形界面,只提供了纯文本控制台环境服务器上,它将是运行期定位虚拟机性能问题的首选工具。
jstat命令格式:
jstat [option vmid [ interval [s|ms] [count] ] ]
参数interval和count代表查询的间隔和次数,如果省略这两个参数,说明只查询一次。
例如:jstat –gc 3232 500 20
命令含义为:每500ms查询一次进行3232垃圾收集器的状况,一共查询20次。
选项option代表用户希望查询虚拟机信息,主要分为3类;类装载、垃圾收集和运行期编译状况。
3. jinfo:Java配置信息工具
jinfo(Configuration Info for Java)实时查看和调整虚拟机的各项参数。想知道未被显示指定的参数的系统默认值,可以使用jinfo的-flag选项进行查询,jinfo还可以使用-sysprops选项把虚拟机进行的System.getProperties()的内容打印出来。
jinfo命令格式:
jinfo [option] pid
4.jmap:Java内存映像工具
jmap(Memory Map for Java)于生成堆转储快照,查询finalize执行队列,Java堆和永久代的详细信息等。
jmap命令格式:
jmap [option] vmid
5.jstack:Java堆栈跟踪工具
jstack(Stack Trace for Java)用于生成虚拟机当前时刻的线程快照,定位线程出现长时间停顿的原因。
jstack命令格式:
jstack [option] vmid
二、 JDK可视化工具
1. Jconsole:java监视与管理控制台
JConsole可以说是前面介绍的所有功能性JDK工具的一个可视化版本,几乎实现了JVM Manage API中提供的所有的功能。
通过JDK/bin目录下的“jconsole.exe”启动JConsole。如图1,双击其中一个进程即可开始监控,也可以使用“远程进程”功能来连接远程服务器,对远程虚拟机进行监控。
图1