目录
1. jps
(JVM 进程状态)
jps
是一个轻量级的工具,用于列出当前机器上运行的所有 Java 进程。它可以显示进程的 PID、主类名、JVM 参数等。
jps
- 这个命令将列出当前运行的 Java 进程及其 PID。如果你想查看更多详细信息,可以使用
-v
选项来查看进程的启动参数:
jps -v
2. jstack
(线程堆栈信息)
jstack
用于打印指定 Java 进程的线程堆栈信息,通常用于诊断死锁或分析线程的执行情况。
jstack <pid>
<pid>
是目标 Java 进程的进程 ID。使用jps
命令可以查看当前运行的进程 ID。- 你还可以使用
jstack
的-l
参数来查看锁的信息,包括死锁信息:
jstack -l <pid>
3. jstat
(JVM 性能监控)
jstat
是一个用于监控 JVM 性能的命令行工具。它可以显示关于垃圾回收、堆内存、类加载等方面的统计信息。
常用的 jstat
命令示例:
- 查看堆内存使用情况:
jstat -gc <pid>
- 显示类加载统计信息:
jstat -class <pid>
- 显示垃圾回收统计信息:
jstat -gcutil <pid>
- 查看详细的 GC 日志信息:
jstat -gcnew <pid>
jstat
还有许多其他的选项,可以通过man jstat
或jstat -h
获取帮助信息。
4. jmap
(内存映像和堆信息)
jmap
用于生成堆的快照,或查看堆内存的使用情况。它可以输出堆的详细信息,帮助分析内存问题。
- 查看堆内存的概况:
jmap -heap <pid>
- 获取堆内存的详细信息:
jmap -histo <pid>
- 创建堆转储(heap dump),用于后续的内存分析:
jmap -dump:format=b,file=<filename>.hprof <pid>
- 该命令将生成一个
hprof
格式的堆转储文件,你可以使用工具如MAT
(Memory Analyzer Tool) 来分析这个文件。
5. jconsole
(JVM 监控和管理工具)
jconsole
是一个图形化的 JVM 监控工具,提供关于 JVM 的实时监控功能。它可以显示堆内存使用情况、线程活动、类加载、GC 活动等信息。你可以通过以下命令启动 jconsole
:
jconsole
- 启动后,
jconsole
会列出本地和远程的 Java 进程,你可以选择一个进程来进行实时监控。
6. visualvm
(可视化的 Java 性能监控)
visualvm
是一个 Java 虚拟机监控、分析和故障排除的图形化工具,适用于分析性能瓶颈、内存泄漏、线程死锁等问题。你可以用它来查看堆栈跟踪、堆内存、线程状态等信息。
启动 VisualVM:
visualvm
- 在 VisualVM 中,你可以选择一个正在运行的 Java 应用程序,并且查看其各项指标,如堆内存使用情况、CPU 使用率、线程状况、GC 活动等。
7. jcmd
(JVM 命令行工具)
jcmd
是一个功能强大的命令行工具,可以用来获取 JVM 的各种状态信息和进行诊断,替代了部分 jstack
、jmap
等工具的功能。
- 获取堆栈信息:
jcmd <pid> Thread.print
- 获取 GC 状态:
jcmd <pid> GC.run
- 获取内存相关信息:
jcmd <pid> VM.native_memory summary
- 查看系统属性:
jcmd <pid> VM.system_properties
8. ps
和 top
命令(系统级别的资源监控)
ps
命令:查看正在运行的 Java 进程及其资源占用情况。
ps -ef | grep java
top
命令:实时查看系统资源的使用情况,包括 CPU、内存、线程等信息。
top -p <pid>
9. jinfo
(JVM 配置和系统属性)
jinfo
命令用于查看和修改正在运行的 Java 进程的系统属性、JVM 参数等信息。
- 查看 JVM 参数:
jinfo -flags <pid>
- 查看系统属性:
jinfo -sysprops <pid>
10. gc.log
文件(垃圾回收日志)
如果你在启动 JVM 时启用了 GC 日志记录(使用 -Xloggc
或其他 GC 日志选项),你可以查看生成的垃圾回收日志文件,以分析堆内存使用情况和垃圾回收的情况。
启动 JVM 时启用 GC 日志:
java -Xlog:gc* -jar your-app.jar
这会将 GC 日志输出到标准输出,或者指定一个文件。你可以查看日志中的 GC 活动、堆内存占用、GC 时长等信息。
总结
以下是一些查看 JVM 状态和堆栈信息的常用命令:
jps
— 查看 JVM 进程。jstack
— 打印线程堆栈信息。jstat
— JVM 性能监控。jmap
— 查看堆内存信息、生成堆转储。jconsole
— 图形化监控工具。visualvm
— 可视化 Java 性能监控工具。jcmd
— 强大的命令行工具。ps
和top
— 系统级别的进程监控。jinfo
— 查看 JVM 配置和系统属性。
这些命令和工具帮助你在不同层面上诊断和监控 Java 应用程序的运行状况。