1、jps(JVM Process Status):虚拟机进程状况工具
可以列出正在运行的JVM进程,并显示JVM执行的主类的名称,以及这些进程的本地JVM的唯一ID(LVMID Local Virtual Machine Identifier)。
jps可以通过RMI协议查询开启了RMI服务的远程虚拟机进程状态 。
jps命令格式:jps [options] [hostid]
-q 只输出LVMID,省略主类名称
-m 输出虚拟机进程启动时传递给主类main()函数的参数
-l 输出主类的全名,如果进程执行的jar包,输出jar路径
-v 输出JVM进程启时JVM参数
2、jstat(JVM Statistics Monitoring Tool):虚拟机统计信息监控工具
监控JVM各种运行状态信息的命令行工具,可以显示本地或远程JVM进程中类的装载、内存、垃圾收集、JIT编译等运行数据。
jstat命令格式:jstat [ option vmid [ interval [ s|ms ] [ count ] ] ]
interval是查询间隔
count是查询次数
举例:每250毫秒查询一次2764垃圾收集的情况,一共查询20次:jstat -gc 2764 250 20
-class 监视类装载、卸载数量、总空间、类装载所耗费的时间
-gc 监视Java堆状况,包括Eden区、2个survivor区、老年代、永久带等的容量、已用空间、GC时间合计等信息
-gccapacity 与-gc类似,输出主要关注Java堆各个区域使用到的最大最小空间
-gcutil 与-gc类似,输出主要关注已使用空间占总空间的百分比
-gcnew 监视新生代GC状况
-gcold 监视老年代GC状况
-compiler 输出JIT编译器编译过的方法、耗时等信息
3、jinfo(configuration info for java):Java配置信息工具
实时查看和调整JVM的各项参数
jinfo命令格式:jinfo [option] pid
4、jmap(memory map for java):Java内存映像工具
jmap命令用于生成堆转储快照(heapdump/dump文件),查询finalize执行队列,Java堆和永久代的详细信息,如空间使用率、当前用的是哪种收集器等。
jmap命令格式:jmap [option] vmid
5、jhat(JVM heap analysis tool)虚拟机堆转储快照分析工具
jhat内置了一个微型的HTTP/HTML服务器,生成dump文件的分析结果后,可以在浏览器中查看。(ps:不建议使用)
6、jstack(stack trace for java) Java堆栈跟踪工具
jstack命令用于生成JVM当前时刻的线程快照(threaddump/javacore文件),线程快照就是当前JVM内每一条线程正在执行的方法堆栈的集合,生成线程快照的主要目的是定位线程出现长时间停顿的原因,如线程间死锁、死循环、请求外部资源导致的长时间等待等都是导致线程长时间停顿的常见原因。线程出现停顿的时候,通过jstack来查看各个线程的调用堆栈,就可以知道没有响应的线程到底在后台做些什么事情,或者等待着什么资源。
jstack命令格式:jstack [option] vmid
jdk可视化工具:/bin/jconsole.exe