基础故障处理工具
- jps: JVM process status tool,列出正在运行的虚拟机进程,显示虚拟机执行主类名称,以及这些进程的本地虚拟机唯一ID。可以加入参数:
jps -m 运行时传入主类的参数;
jps -v 虚拟机参数;
jps -l 运行的主类全名 或者jar包名称;
也可以一块使用 jsp -mlv。- jstat: 用于监视虚拟机各种运行状态信息的命令行工具,包括监视类装载、内存、垃圾回收、jit编译信息。jstat -gcutil 3344 1000 10
- 每隔1000毫秒执行一次 10次。
- jinfo: 实时查看和调整虚拟机的各项参数.
- 第一条指令为:是否启用Serial垃圾回收,输出-,表示不启用;
第二条指令为:是否启用G1垃圾回收,输出+,表示启用。 - jmap: 用于生成堆转储快照,还可以查询finalize执行队列,Java堆和方法区的详细信息。
- **jhat: ** JVM heap Analysis Tool(分析堆)十分占据内存与CPU,使用较少。
- **jstack: ** 用于生成虚拟机当前时刻线程快照。目的:定位线程出现长时间停顿的原因(例如线程死锁、死循环等)。 命令格式:jstack [option] vmid
可以通过Thread.getAllStackTraces()方法获取StackTraceElement,来代替jstack方法。
可视化故障处理工具
- JHSDB: 基于服务性代理实现的进程外调试工具,可以用它来调试虚拟机进程或者dump出来的内存转储快照。
- JConsole: 是一种基于JMX的可视化监视、管理工具,可进行内存管理、线程管理、查看死锁等。
- VisualVM: 是一款免费的,集成了多个 JDK 命令行工具的可视化工具,它提供强大的分析能力,对 Java 应用程序做性能分析和调优。这些功能包括生成和分析海量数据、跟踪内存泄漏、监控垃圾回收器、执行内存和 CPU 分析,同时它还支持在 MBeans 上进行浏览和操作。是目前为止功能最强大的运行监测和故障处理工具。
- Java Mission Control: 用于监控Java虚拟机。