您的位置:首页 > 运维架构

JVM 性能监控工具

2015-07-08 14:40 387 查看
在 java 的 bin 目录下,jdk 提供了很多使用的工具,下面学习一些监控和故障处理的工具。
名称作用
jpsJVM process status tool,显示指定系统内所有的 HotSpot 虚拟机进程
jstatJVM statistics monitoring tool,用于收集 HotSpot 虚拟机各方面的运行数据
jinfo显示虚拟机配置信息
jmap生产虚拟机的内存快照 dump 文件
jhat分析 dump 文件
jstack显示虚拟机的线程快照


jps 虚拟机进程状况工具

jps 的命令格式:

jps [options] [hostid]

jps 可以查看通过 rmi 协议查询开启了 rmi 服务的原创虚拟机进程状态,hostid 是 rmi 注册表中注册的主机。

jps 有如下主要的选项:
选项作用
-q只输出 LVMID,省略主类的名称
-m输出虚拟机启动时候传递给 main 方法的参数
-l输出类的全名
-v输出虚拟机进程启动时 JVM 参数


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

jstat 可以显示本地或者远程虚拟机进程中的类装载、内存、垃圾收集、 JIT 编译等运行数据。

jstat 的命令格式:

jstat [option vmid [interval] [count]]

例如:

查询 25296 进程的虚拟机状况,并且每隔 1000 毫秒一次,显示 5 次。

看下主要选项的含义:
选项作用
-class监视类装载、卸载数量、总看见以及类装载消耗的时间
-gc监视 java 堆状况,包括 eden 区、两个 survivor 区、年老代、永久代等的容量、已用空间、gc 时间合计等
-gccapacity内容与 -gc 基本相同,输出主要关注 java 堆各个区使用到的最大、最小空间
-gcutil内容与 -gc 基本相同,关注已使用区域占总空间的百分比
-gccause内容与 -gcutil 一样,并且多输出导致上一次 gc 产生的原因
-gcnew监视新生代状况
-gcnewcapacity与 -gcnew 相同,主要关注使用到的最大、最小空间
-compiler输出 JIT 编译器编译过的方法、耗时等信息
下面解读下 -gcutil 所产生的内容:

S0、S1 分别代表了 Survivor0 和 Survivor1,E 代表 Eden 区,O 代表老年区, P 代表永久代。YGC 代表 Young GC 的次数,YGCT 代表时间,后面一样解释。


jinfo 查看 java 配置信息工具

这个命令比较简单,直接看自带的描述:


jmap 生产 java 内存 dump

jmap 除了可以生成 dump 文件外,还可以查询 finalize 执行队列,java 堆和永久代的详细信息,如空间使用率和当前用的是哪种收集器等。

具体的 jamp 如何操作部多介绍,看下面提供的说明,比较简单:


jhat 虚拟机堆快照分析工具

我们可以使用 jhat 来分析 jmap 生成的 dump 文件

默认会开 7000 端口进行 web 访问。一般不使用这个命令来分析,会使用专业的工具来分析 dump 文件,如 eclipse memory analyzer 等。


jstack 分析 java 堆栈

jstack 用来生成当前时刻线程快照。

使用方式如下:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息