当前位置: 首页 > article >正文

常见 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)进行优化。

原文地址:https://blog.csdn.net/Vic10101/article/details/146124616
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.kler.cn/a/583718.html

相关文章:

  • 19873连通块中点的数量
  • 回归预测 | MATLAB实现SSA-LSTM和LSTM多输入单输出
  • Git 的基本概念和使用方式(附有思维导图)
  • 一维下料之 *贪心算法* —— CAD c#二次开发
  • 【软考-架构】3.3、模式分解-事务并发-封锁协议
  • C# WPF 基础知识学习(一)
  • 贪心算法(5)(java)k次取反后最大化的数组和
  • 什么是AI?AI能对我们生活产生哪些影响?
  • LeetCode 112. 路径总和 II java题解
  • 如何用Docker容器化Java应用?Spring Boot实战指南
  • Spring Boot 约定大于配置:实现自定义配置
  • HCIP复习拓扑练习(修改版)
  • 【3DGS】SuperSplat本地运行+修改监听端口+导入ply模型+修剪模型+在线渲染3DGS网站推荐
  • 设计模式C++
  • Java 8新特性:Lambda表达式与Stream API实战
  • OEM SQL Details and Session Details 5s 或者parallel 才会在sql monitor显示
  • Aliyun CTF 2025 web 复现
  • uniapp,自绘仪表盘组件(基础篇)
  • BEVDepth: Acquisition of Reliable Depth for Multi-view 3D Object Detection 论文阅读
  • c# txt文档的实时显示,用来查看发送接收指令