监控 JVM 的状态和堆栈信息的常用命令和工具

目录

1. jps(JVM 进程状态)

2. jstack(线程堆栈信息)

3. jstat(JVM 性能监控)

4. jmap(内存映像和堆信息)

5. jconsole(JVM 监控和管理工具)

6. visualvm(可视化的 Java 性能监控)

7. jcmd(JVM 命令行工具)

8. ps 和 top 命令(系统级别的资源监控)

9. jinfo(JVM 配置和系统属性)

10. gc.log 文件(垃圾回收日志)

总结


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 的各种状态信息和进行诊断,替代了部分 jstackjmap 等工具的功能。

  • 获取堆栈信息:
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 状态和堆栈信息的常用命令:

  1. jps — 查看 JVM 进程。
  2. jstack — 打印线程堆栈信息。
  3. jstat — JVM 性能监控。
  4. jmap — 查看堆内存信息、生成堆转储。
  5. jconsole — 图形化监控工具。
  6. visualvm — 可视化 Java 性能监控工具。
  7. jcmd — 强大的命令行工具。
  8. ps 和 top — 系统级别的进程监控。
  9. jinfo — 查看 JVM 配置和系统属性。

这些命令和工具帮助你在不同层面上诊断和监控 Java 应用程序的运行状况。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值