常见 JVM 工具介绍

1. jps(Java Virtual Machine Process Status Tool)

  • 功能:列出当前用户的所有 Java 进程及其 PID。

  • 常用场景:快速定位目标 Java 应用的进程 ID。

  • 常用命令

    bash复制

    复制代码
    jps -l  # 显示主类全名
    jps -v  # 显示 JVM 启动参数

2. jstat(JVM Statistics Monitoring Tool)

  • 功能:实时监控 JVM 内存、GC、类加载等状态。

  • 常用场景:监控垃圾回收(GC)性能,分析内存使用情况。

  • 常用命令

    bash复制

    复制代码
    jstat -gcutil <pid> 1000 10  # 每 1 秒采样 GC 状态,共 10 次
    jstat -class <pid>  # 类加载统计

3. jmap(Memory Map Tool)

  • 功能:生成堆转储文件(Heap Dump)或查看堆内存对象分布。

  • 常用场景:分析内存泄漏、排查内存溢出问题。

  • 常用命令

    bash复制

    复制代码
    jmap -heap <pid>  # 查看堆内存使用详情
    jmap -histo:live <pid>  # 统计存活对象
    jmap -dump:format=b,file=/path/to/dump.hprof <pid>  # 生成堆转储文件

4. jstack(Stack Trace Tool)

  • 功能:生成线程快照,用于分析线程死锁或高 CPU 问题。

  • 常用场景:排查线程死锁、分析线程状态。

  • 常用命令

    bash复制

    复制代码
    jstack <pid> > thread_dump.txt  # 输出线程快照到文件

5. jcmd(JVM Command Tool)

  • 功能:多功能工具,支持 GC、类加载、线程等诊断。

  • 常用场景:动态调整 JVM 参数、生成堆转储文件、打印线程信息等。

  • 常用命令

    bash复制

    复制代码
    jcmd <pid> VM.flags  # 查看 JVM 参数
    jcmd <pid> GC.heap_info  # 查看堆内存信息
    jcmd <pid> Thread.print  # 打印线程快照

6. jinfo(Java Information Tool)

  • 功能:查看和动态修改 JVM 的运行时参数。

  • 常用场景:查看 JVM 启动参数、动态调整参数。

  • 常用命令

    bash复制

    复制代码
    jinfo -flags <pid>  # 查看 JVM 参数
    jinfo -flag +HeapDumpBeforeFullGC <pid>  # 动态启用 HeapDumpBeforeFullGC

7. jhat(Heap Analysis Tool)

  • 功能:分析 jmap 生成的堆转储文件(Heap Dump)。

  • 常用场景:分析内存泄漏、排查对象占用情况。

  • 常用命令

    bash复制

    复制代码
    jhat /path/to/dump.hprof  # 启动 HTTP 服务器,通过浏览器访问分析结果

8. jconsole(Java Monitoring and Management Console)

  • 功能:图形化工具,用于监控 JVM 的内存、线程、类加载等信息。

  • 常用场景:开发环境中的实时监控和调优。

  • 使用方法 :直接启动 jconsole,选择目标进程进行监控。

9. jmc(Java Mission Control)

  • 功能:高级的图形化监控工具,支持飞行记录器(Flight Recorder)功能。

  • 常用场景:生产环境中的性能监控和问题诊断。

  • 使用方法 :启动 jmc,连接到目标 JVM,进行实时监控或分析飞行记录。

总结

这些工具各有用途,可以根据实际需求选择合适的工具:

  • 开发环境:优先使用图形化工具(如 jconsole、jmc)。

  • 生产环境:推荐使用低开销工具(如 jcmd、jstat)。

  • 深度分析:结合日志分析工具(如 jmap + jhat、MAT)进行优化。

相关推荐
白露与泡影1 小时前
Spring Boot项目优化和JVM调优
jvm·spring boot·后端
Boop_wu3 小时前
[Java EE] 多线程 -- 初阶(2)
java·开发语言·jvm
Chan165 小时前
【 Java八股文面试 | JVM篇 内存结构、类加载、垃圾回收与性能调优 】
java·jvm·spring boot·后端·spring·idea
百***926510 小时前
java进阶1——JVM
java·开发语言·jvm
虫师c10 小时前
字节码(Bytecode)深度解析:跨平台运行的魔法基石
java·jvm·java虚拟机·跨平台·字节码
坐吃山猪1 天前
第2章-类加载子系统-知识补充
jvm
百***92021 天前
java进阶1——JVM
java·开发语言·jvm
Pluchon1 天前
硅基计划6.0 柒 JavaEE 浅谈JVM&GC垃圾回收
java·jvm·数据结构·java-ee·gc
初学小白...1 天前
JVM入门知识点
java·服务器·jvm
ZStack开发者社区1 天前
VMware替代 | ZStack ZSphere虚拟化平台金融级高可用能力解析
服务器·jvm·金融·云计算