监控工具:
- jps
列出系统上正在运行的Java虚拟机 - jstat
查看对内存各个部分的使用量,垃圾回收信息,以及加载类的数据。当出现GC异常时,使用-gccause查看最近和当前的垃圾回收事件的原因,具体用法参考https://www.cnblogs.com/duanxz/archive/2012/11/29/2794764.html - jstatd
是一个基于RMI(Remove Method Invocation)的服务程序,它用于监控基于HotSpot的JVM中资源的创建及销毁,并且提供了一个远程接口允许远程的监控工具连接到本地的JVM执行命令。 - jmc
可视化JVM监控工具,与jvisualvm相似。jmc监控数据比jvisualvm更加丰富。
故障处理工具
- jcmd
是一个多功能的工具,可以用它来导出堆、查看Java进程、导出线程信息、执行GC、还可以进行采样分析(jmc 工具的飞行记录器)。示例参考:jdk工具之jcmd介绍 - jinfo
可以用来查看正在运行的 java 应用程序的扩展参数,包括Java System属性和JVM命令行参数。
-
jhat
是jdk内置的工具之一。主要是用来分析java堆的命令,可以将堆中的对象以html的形式显示出来,包括对象的数量,大小等等,并支持对象查询语言。 - jmap
是一个可以输出所有内存中对象的工具,甚至可以将VM 中的heap,以二进制输出成文本。打印出某个java进程(使用pid)内存内的,所有‘对象’的情况(如:产生那些对象,及其数量)。具体示例参考https://www.cnblogs.com/duanxz/p/4890475.html - jsadebugd
附加到Java进程或核心文件,并充当调试服务器。 - jstack
用于生成java虚拟机当前时刻的线程快照。线程快照是当前java虚拟机内每一条线程正在执行的方法堆栈的集合,生成线程快照的主要目的是定位线程出现长时间停顿的原因,如线程间死锁、死循环、请求外部资源导致的长时间等待等。
线程出现停顿的时候通过jstack来查看各个线程的调用堆栈,就可以知道没有响应的线程到底在后台做什么事情,或者等待什么资源。具体示例参考https://www.cnblogs.com/duanxz/p/5487576.html