可视化故障工具

# jps

简称jvm process status tool,列出正在运行的虚拟机进程,主要展示虚拟机进程id和虚拟机执行main方法所在类的名称;命令格式如下:

jps [options] [hostid]
1

# jps -l

输出主类的全名,如果是jar则输出jar的绝对路径

# jps -v

输出虚拟机进程启动时JVM参数

# jstat

简称jvm statistics monitoring tool,监视虚拟机运行时各种状态的命令行工具。可以显示本地或者远程虚拟机进程中类加载、内存、垃圾收集、即时编译等运行时数据。 示例:jstat -gcutil 3123 200 20.表示查看gc指标,3223虚拟机进程id,200:间隔200ms输出一次,20:输出20次

# jmap

简称jvm memory map for java.用于生成堆转储快照.

# -heap

显示堆详细信息,使用回收期类型、参数配置、分代状况等

# -histo

显示堆中对象统计,包括类、示例数量、合计容量

# jhat

简称jvm heap analysis tool.虚拟机堆快照分析工具,jhat内置一个微型的http/web服务器,生成堆快照分析结果后,可以在网页中查看。一般不推荐直接在应用服务器使用, 原因有二,1.耗费服务器性能资源,2.分析功能较为简陋

# jstack

简称stacktrace for java,用于生成虚拟机当前的线程快照。主要使用场景:定位线程长时间停顿(如死锁、死循环、请求外部资源长时间挂起等).jdk5之后增加函数查看

for (Map.Entry<Thread, StackTraceElement[]> entry : Thread.getAllStackTraces().entrySet()) {
  final Thread thread = entry.getKey();
  if (thread.equals(Thread.currentThread())) {
    continue;
  } else {
    log.info("线程名称{}", thread.getName());
    for (StackTraceElement stackTraceElement : entry.getValue()) {
        log.info("{}", stackTraceElement);
    }
  }
}
1
2
3
4
5
6
7
8
9
10
11