1、JDK命令行工具
jps命令:

作用:列出正在运行的虚拟机进程。
格式:jps [option] [hostid]
选项:
-q 只输出LVMID(Local Virtual Machine Identifier)省略主类的名称
-m 输出虚拟机进程启动时传递给主类的main()函数的参数
-l 输出主类全名,如果进程执行的时Jar包,输出Jar路径
-v 输出虚拟机进程启动的jvm参数

jstat命令:

虚拟机统计堆信息监视工具。
作用:它可以显示本地或者远程虚拟机进程中的类装载、内存、垃圾收集、JIT编译等运行数据。
格式:jstat [ option vmid [interval [s|ms] [count]] ]
选项option代表用户希望查询虚拟机的内容,主要分为类装载、垃圾收集、运行期编译状况3类
选项:
-class 监视类装载,卸载数量,总空间以及类装载所耗费的时间。
-gc 监视Java堆状况,包括Eden区,两个survivor区,老年代,永久代等容量,已用空间,GC时间合计等信息。

jinfo命令:

Java配置信息工具
作用:实时地查看和调整虚拟机各项参数,包括未被显示指定的参数的默认值,并且加入了运行期间修改参数的能力
格式:jinfo [option] pid

jmap命令:

Java内存映像工具
作用:用于生成堆转储快照(一般称为heapdump或者dump文件),它还可以查询finalize执行队列,Java堆和永久代的详细信息,如空间使用率、当前用的是哪种收集器等
格式:jmap [ option ] vmid
选项:-dump 生成Java堆转储快照
-finalizerinfo 显示出F-Queue中等待Finalizer线程执行finalize方法的对象,只在Linux、Solaris平台有效
-heap 显示堆统计信息,只在Linux、Solaris平台有效
-histo 显示堆中对象统计信息,包括类、实例数量、合计容量
-F 当虚拟机进程对dump选项没有响应时,可使用这个选项强制生成dump快照,只在Linux、Solaris平台有效

jstack命令:

作用:Java堆栈跟踪工具,用于生成虚拟机当前线程快照,线程快照就是当前虚拟机每一条线程正在执行的方法堆栈的集合,可以通过jstack来查看各个线程调用堆栈,就可以定位到线程在后台干什么。
格式:jstack [ option ] vmid
选项:
-F 当正常输出的请求不被响应时,强制输出线程堆栈
-l 除了堆栈外,显示关于锁的附加信息
-m 如果调用到本地方法的话,可以显示C/C++的堆栈

2、JDK可视化工具

JConsole
作用:Java监视与管理工具
内存页签相当于可视化的jstat命令,而线程页签相当于可视化的jstack命令,遇到线程停顿时可以使用这个页签进行分析