JDK 的命令行工具

Sun JDK监控和故障处理工具

名称主要作用
jpsJVM Process status Tool,显示指定系统内所有的HotSpot虚拟机进程
jstatJVM Statistics Monitoring Tool,用于收集HotSpot虚拟机各方面运行数据
jinfoConfiguration Info For Java,显示虚拟机配置信息
jmapMemory Map For Java,生成虚拟机的内存转储快照(heapdump文件)
jhatJVM Heap Dump Browser,用于分析heapdump文件,它会简历一个HTTP/HTML服务器,让用户可以在浏览器上查看分析结果
jstackStack Trace for Java,显示虚拟机的线程快照

虚拟机进程状况工具

JDK的很多小工具的名字都参考了UNIX命令的命名方式,jps(JVM Process Status Tool)是其中的典型。除了名字像UNIX的ps命令之外,它的功能也和ps命令类似:可以列出正在运行的虚拟机进程,并显示虚拟机执行主类名称以及这些进程的虚拟机唯一ID(Local Virtual Machine Identifier,LVMID)。LVMID与操作系统的进程ID(PID)是一致的。
jps命令格式:
jps [ options] [hostid]
例如: jps -l
选项以及其作用:

选项作用
-q只输出LVMID,省略主类的名称
-m输出虚拟机进程启动时传递给主类main()函数的参数
-l输出主类的全名,如果进程执行的是jar包,输出jar路径
-v输出虚拟机进程启动时JVM参数

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

jstat(JVM Statistics Monitoring Tool )是用于监视虚拟机各种运行状态信息的命令行工具。它可以显示本地或者远程虚拟机进程中的类装载、内存、垃圾收集、JIT编译等运行数据,在没有GUI图形界面,只提供纯文本控制台环境的服务器上,它将是运行期定位虚拟机性能问题的首选工具。
jstat命令格式为:
jstat [ option vmid [interval[s|ms] [ count] ] ]
远程VMID格式:
[protocol:] [//] [ lvmid [@hostname [:port]/servername ]
参数interval和count代表查询间隔和次数,如果省略,说明只查询一次。假设每250秒查询一次进程2764垃圾收集状况,一共查询20次,那命令应当是:
jstat -gc 2764 250 20

命令的详解如下表:

选项作用
-class监视类装载、卸载数量、总空间以及类装载所耗费时间
-gc监视Java堆状况,包括Eden区、Syurvivor区、老年代、永久代等的容量、已用空间、GC时间合计等信息
-gccapacity监视内容与-gc基本相同,但输出主要关注Java堆各个区域使用到的最大、最小空间
-gcutil监视内容与-gc基本相同,但输出主要关注已使用空间占总空间的百分比
-gccause与-gcutil功能一样,但是会额外输出导致上一次GC产生的原因
-gcnew监视新生代GC状况
-gcnewcapacity监视内容与-gcnew相同,输出主要关注使用到的最大最小空间
-gcold监视老年代GC状况
-gcoldcapacity监视内容与-gcold基本相同,输出主要关注使用到的最大最小空间
-gcpermcapacity输出永久代使用到的最大最小空间
-compiler输出JIT编译器编译过的方法、耗时等信息
-printcompilation输出已经被JIT编译的方法

Java配置信息工具

jinfo(Configuration Info For Java)的作用是实时地查看和调整虚拟机的各项参数。使用jps -v 可以查看虚拟机启动时显式指定的参数列表,未被显式指定的参数列表,可以通过jinfo -flags选项进行查询,jinfo详细用法如下:
[root@localhost ~]# jinfo -help
Usage:
jinfo [option]
(to connect to running process)
jinfo [option]

jmap:Java内存映像工具

jmap(Memory Map for Java)命令用于生成堆转储快照(一般称为heapdump或dump文件)。如果不使用jmap命令,要想获取Java堆转储快照,还有一些比较“暴力”的手段:譬如在第2章中用过的-XX:+HeapDumpOnOutOfMemoryError参数,可以让虚拟机在OOM异常出现之后自动生成dump文件,通过-XX:+HeapDumpOnCtrlBreak参数则可以使用[Ctrl]+[Break]键让虚拟机生成dump文件,又或者在Linux系统下通过Kill-3命令发送进程退出信号“吓唬”一下虚拟机,也能拿到dump文件。
jmap的作用并不仅仅是为了获取dump文件,它还可以查询finalize执行队列、Java堆和永久代的详细信息,如空间使用率、当前用的是哪种收集器等。

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

jmap [option] vmid

jmap工具主要选项:

选项作用
-dump生成Java堆转储快照。格式为:-dump:[live,]format=b,file=,其中live子参数说明是否只dump出存活的对象
-finalizerinfo显示在F -Queue中等待Finalizer线程执行finalize方法的对象。只在Linux/Solaris平台下有效
-heap显示Java堆详细信息,如使用哪种回收器、参数配置、分代状况等。只在Linux/Solaris平台下有效
-histo显示堆中对象统计信息,包括类、实例数量和合计容量
-permstat以ClassLoader为统计口径显示永久代内存状态。只在Linux/Solaris平台下有效
-F当虚拟机进程对-dump选项没有响应时,可使用这个选项强制生成dump快照。只在Linux/Solaris平台下有效

例子:

C:\Users\hasee>jmap -dump:format=b,file=idea.bin 1060
Dumping heap to C:\Users\hasee\idea.bin …
Heap dump file created

其中1060是通过jps命令查询到的LVMID

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值