分享

应该知道的几个JDK自带命令与可视化工具

 IT乐知 2020-04-13

JDK发展至今已经非常强大,除了我们用来开发使用外实际上还提供了一系列的工具!

jps

JDK很多小工具名字和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程序员日常学习笔记,如理解有误欢迎各位交流讨论!

未标题-00000000

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多