JDK发展至今已经非常强大,除了我们用来开发使用外实际上还提供了一系列的工具! jpsJDK很多小工具名字和Linux的命令比较像,jps就是其中的典型,和Linux的ps很像,功能也像。 功能介绍:列出正在运行的虚拟机进程,并显示虚拟机执行主类(Main Class,main()方法所在的类)名称以及这些进程的本地虚拟机唯一ID(LVMID,Local Virtual Machine Idertifier)。 命令格式:jps [options] [hostid] 命令详解:jps还可以通过RMI协议查询开启了RMI服务的运行虚拟机进程状态,参数hostid为RMI注册表中注册的主机名。 options常见参数: -q:只输出LVMID,省略主类的名称; -m:输出虚拟机进程启动传递给主类main()方法的参数; -l:输出主类全名,如果进程执行的是jar包,输出jar路径; -v:输出虚拟机启动时的JVM参数; 参数运行示例如下图: jstat(JVM Statistics Monitoring Tool)监视虚拟机各种运行状态信息,可以显示本地或者远程虚拟机进程中的欸类加载、内存、垃圾收集、即时编译等运行数据. 命令格式:jstat [option vmid [interval[s|ms] [count]]]; 命令解释:其中如果是本地虚拟机则vmid和上一个命令的LVMID是同一个,如果是远程,那么vimd是:[protocol:][//]lvmid[@hostname[:port]/servername]。 其中interval和count表示间隔时间和间隔次数,省略表示查询一次。 常见参数: -class:监视类加载、卸载数量、总空间以及类转正所耗费的时间; -gc:监视Java堆状况,包括Eden区、2个Survivor区、老年代、等容量,已用空间,垃圾收集时间; -gccapacity:与-gc参数基本相同,但输出主要关注Java堆各个区域使用到的最大、最小空间; -gcutil:与-gc基本相同,输出的是Java堆已使用空间占总空间百分比; 运行示例如下图: S0、S1、E表示的是2个survivor和Eden使用比例,O、M表示老年代和元空间使用比例,CCS压缩使用比例,YGC、YGCT分别表示Young GC的次数和时间,FGC、FGCT同理,GCT则表示总时间。这些参数如果知道英语名字就能很好的记住。 jstack(Stack Trace for Java)用于生成虚拟机当前时刻的线程快照,线程快照就是当前虚拟机内每条线程正在执行的方法堆栈集合。可以用来定位线程长时间停顿的原因。 命令格式:jstack [option] vmid; option参数: -F:当正常输出的请求不被响应时,强制输出线程堆栈; -l:除堆栈外,显示关于锁的附加线程; -m:如果调用到本地方法栈的话,可以显示C/C++的堆栈; 运行示例如下图: 可视化工具jconsole虚拟机监控工具,可以选择指定的进程进行观察,运行如下图: 选择进去过后就可以看到监控结果了,如下图: jvisualvm是jdk自带的可视化监控工具,功能很强大,同时还可以安装各种扩展插件,运行如下图: 总结JDK发展至今已经有很多这类的工具了,在JDK的bin目录下基本上都是。这里只是简单介绍了几个简单好用的作为入门学习,更多的工具大家有兴趣可以去测试运行一下。 Java程序员日常学习笔记,如理解有误欢迎各位交流讨论! |
|
来自: IT乐知 > 《程序员的私房笔记》