码迷,mamicode.com
首页 > 其他好文 > 详细

jcmd、jmc介绍

时间:2016-11-30 02:21:59      阅读:492      评论:0      收藏:0      [点我收藏+]

标签:erp   查看   recording   png   记录   快速   lenovo   line   准备   

一、jcmd命令使用

概述

在JDK 1.7之后,新增了一个命令行工具jcmd。它是一个多功能工具,可以用来导出堆,查看Java进程,导出线程信息,执行GC等。

使用示例

下面这个命令能够列出当前运行的所有虚拟机:

技术分享

参数-l表示列出所有java虚拟机,针对每一个虚拟机,可以使用help命令列出该虚拟机支持的所有命令,如下图所示,以8152这个进程为例:

技术分享

技术分享

查看虚拟机启动时间VM.uptime

技术分享

打印线程栈信息Thread.print

技术分享

查看系统中类统计信息GC.class_histogram

执行如下命令:

C:\Users\lenovo>jcmd 8152 GC.class_histogram

得到结果如下: 

技术分享

导出堆信息GC.heap_dump

使用如下命令可以导出当前堆栈信息,这个命令功能和 jmap -dump 
功能一样

技术分享

获取系统Properties内容VM.system_properties

技术分享

获取启动参数VM.flags

技术分享

获取所有性能相关数据PerfCounter.print

技术分享

总结

从以上示例可以看出,jcmd拥有jmap的大部分功能,并且Oracle官方也建议使用jcmd代替jmap。

二、运行Java飞行记录器(Java Flight Recorder)

上面讲到的工具都是作为快速的查看诊断工具的。如果要深入分析问题,可以选择使用内置的Java飞行记录器:Java Mission Control。

运行JFR需要三步:

1. 创建一个包含了你自己配置的JFR模板文件。运行jmc, 然后Window->Flight Recording Template Manage菜单。准备好档案后,就可以导出文件,并移动到要排查问题的环境中。

技术分享

2. 由于JFR需要JDK的商业证书,这一步需要解锁jdk的商业特性。

C:\Users\lenovo>jcmd 8152 VM.unlock_commercial_features

3. 最后你就可以启动JFR。

jcmd <PID> JFR.start name=test duration=60s settings=template.jfc filename=output.jfr

上述命令立即启动JFR并开始使用templayte.jfc的配置收集60s的JVM信息,输出到output.jfr中。

一旦记录完成之后,就可以复制.jfr文件到你的工作环境使用jmc GUI来分析。它几乎包含了排查jvm问题需要的所有信息,包括堆dump时的异常信息。

 

jcmd、jmc介绍

标签:erp   查看   recording   png   记录   快速   lenovo   line   准备   

原文地址:http://www.cnblogs.com/duanxz/p/6115722.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!