JVM性能分析——jps/jstat/jinfo/jmap/jhat/jstack 命令、JConsole/JVisualVM/JProfiler 可视化工具与 Arthas 命令交互工具

jps/jstat/jinfo/jmap/jhat/jstack 命令行工具

jps/jstat/jinfo/jmap/jhat/jstack 都是 Java 提供的命令行工具。详细介绍查看JVM 性能分析——jdk 自带命令分析工具(jps/jstat/jinfo/jmap/jhat/jstack)

  • jps:查看正在运行的 Java 进程

    输入:jps
    可以看到运行的测试进程 25168 DemoTest;
    在这里插入图片描述

  • jinfo:查看和修改环境相关的配置参数

    输入:jinfo 25168
    可以查看 25168 进程的 JVM 配置信息和系统属性等;
    在这里插入图片描述

  • jstat:查看 JVM 的内存与GC相关统计信息

    输入:jstat -gcutil 25168 1000 10
    可以看到 25168 进程的堆内存使用情况和GC次数与耗时;
    在这里插入图片描述

  • jstack:查看线程堆栈信息

    输入:jstack 25168
    可以看到 25168 进程中的各线程堆栈信息;
    在这里插入图片描述

  • jmap;主要用于导出堆转储(Heap Dump)映像文件

    输入:jmap -dump:format=b,file=file1.hprof 25168
    可以输出 dump 文件——file1.hprof,堆内存的使用数据,使用 JVsiualVM 打开查看各对象数据占用空间情况,用于后续分析;
    在这里插入图片描述
    在这里插入图片描述

  • jhat:堆转储文件分析工具

    输入:jhat file1.hprof
    导入 jmap 导出的 file1.hprof 文件;
    在这里插入图片描述
    上述命令运行,服务启动完后,进入 http://localhost:7000/ 页面可以查看指定类、实例对象相关信息,端口号默认为 7000;
    在这里插入图片描述

JConsole/JVisualVM/JProfiler 图形化分析工具

上面介绍了 JAVA 提供的命令行工具,可以用于查看内存、线程、堆转储文件(.hprof) dump、分析堆转储文件;但是以上都是基于命令行查看,所有结果都是文本描述,不够直观;所以就有了可视化工具,提供直观的图形化界面,方便分析。

  • JConsole

    JConsole 是 Java Development Kit (JDK) 中自带的可视化监控工具。涵盖了 Java 的多项命令;

    • 实时监控:显示内存、线程、CPU 和类的加载情况;(jps、jinfo、jstat、jstack)

    • 图形化界面:供用户友好的图形界面;

    • 适用于简单的性能监控,特别是在开发和测试阶段。

    命令行中输入:jconsole,就会弹出以下界面,该界面选择需要连接的 Java 进程,类似于 jps 查看所有 Java 进程;
    在这里插入图片描述

    选择对应的测试进程 25168,可以进入到监控该进程的界面。

    概要:类似于 jinfo 命令,展示了相关的环境信息;
    在这里插入图片描述

    概览:在同一个界面实时监控并展示内存、线程、CPU 和类的使用情况;导航栏还有内存(jstat)、线程(jstack)、类的单独选项,用户单独展示相关信息,展示结果和单独使用命令返回的结果一样;
    在这里插入图片描述

    内存页面:可以详细看到堆内存的使用变化曲线,以及年轻代、幸存者区、老年代的回收过程;
    在这里插入图片描述

    线程页面:展示线程运行情况,还可以检测死锁;
    在这里插入图片描述

  • JVisualVM

    VisualVM 是一个强大的监控和分析可视化工具,集成了多个 Java 工具,提供更全面的性能监控和分析。

    • 实时监控:提供内存、线程、CPU 和类加载情况情况;(jps、jinfo、jstat、jstack)

    • 堆转储分析:能够生成并分析堆转储文件,帮助检测内存泄漏;(jmp、jhat)

    • 插件支持:支持扩展插件,增加自定义功能;

    • 性能分析:可以分析方法调用的性能瓶颈;

    • 适用于需要深入分析内存和线程问题的场景,适合开发人员和运维人员在生产环境中进行性能监控和分析。

    命令行中输入:jconsole,就会弹出以下界面,可以选择需要连接的 Java 进程,类似于 jps 查看所有 Java 进程;
    在这里插入图片描述

    选择对应的测试进程 25168,可以进入到监控该进程的界面。

    概述:类似于 jinfo 命令,展示了相关的环境信息;
    在这里插入图片描述

    监控:在同一个界面实时监控并展示内存、线程、CPU 和类的使用情况;
    在这里插入图片描述

    点击监控页面右上角的堆 Dump,或者应用程序—>堆 Dump,可以导出堆转储(Heap Dump)映像文件;类似于 jmp 命令;对于已有的 dump 文件,点击文件—>装入,即可导入dump 文件,然后进行分析,类似于 jhat 命令;
    在这里插入图片描述

    线程:展示线程的运行状态,点击线程 Dump,可以进入查看线程堆栈的日志信息,和 jstack 命令结果一致;
    在这里插入图片描述
    在这里插入图片描述

  • JProfiler

    JProfiler 是一款商业性能分析工具,不免费,功能强大,提供全面的 Java 应用程序性能监控和分析功能。

    • 实时监控:提供内存、CPU 和线程的实时监控。

    • 内存分析:深入分析内存使用,检测内存泄漏。

    • 性能分析:可视化方法调用和性能瓶颈,生成详细报告。

    • 集成支持:可以与多种 IDE(如 IntelliJ IDEA 和 Eclipse)集成。

    • 适合需要高级性能分析和调试功能的企业用户,尤其适合对大型复杂系统进行详细分析和优化。

    JProfiler 的简单使用可以参考:JVM 性能分析案列——使用 JProfiler 工具分析 dump.hprof 堆内存快照文件排查内存溢出问题

命令行工具与图形化工具都是用于JVM性能监控和分析,选择使用 JVisualVM 还是 JDK 命令行工具取决于具体的监控和分析需求。对于简单的性能监控和分析,JVisualVM 提供了更友好的用户体验;而在脚本化或快速执行特定任务时,JDK 命令行工具则更为高效。

  • JVisualVM 和 JDK 命令行工具可以互补使用。JVisualVM 提供了图形化的实时监控和分析功能,而 JDK
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值