• JVM分析工具


    JVM在运行过程中,我们可以利用各种工具对JVM进行分析,这是性能调优的利器。可以通过各种工具了解在系统运行过程中,在JVM底层到底发生了什么。JVM分析工具一般分为两种,一种是命令行工具,一种是图形界面工具。

    JVM分析工具

    JDK自带的命令行工具都在jdk的bin目录下(C:\Program Files\Java\jdk1.8.0_291\bin)。内置的命令行工具可以帮助我们系统运行过程中JVM内部的运行过程。主要的工具有如下

    • java:java应用的启动程序,如java -jar xx.jar
    • javac:jdk内置的编译工具,将java源文件编译为.class文件。如javac xx.java
    • javap:反编译class文件工具,如javap -verbose xx.class
    • javadoc:根据java代码和标准注释,自动生成相关的API说明文档
    • javah:JNI开发时,根据java代码生成需要的.h文件
    • extcheck:检查某个jar文件和运行时扩展jar有没有版本冲突,一般使用比较少
    • jdb:Java Debugger,可以调试本地和远端程序,属于JPDA中的一个demo实现,供其他调试器参考。开始很少使用
    • jar:打包工具,可以将文件和目录打包成.jar文件,jar文件从本质上来讲就是zip文件,只是后缀不同。
    • keytool:安全证书和密钥的管理工具
    • jarsigner:JAR文件签名和验证工具
    • policytool:是一款图形界面工具,管理本机的Java安全策略
    • jps/jino:查看运行中的java进程
    • jstat:查看JVM内部gc相关信息
    • jmap:查看线程信息
    • jcmd:执行JVM相关分析命令(整合命令)
    • jrunscript/jjs:执行js命令

    命令行指令具体用法在csdn上有大量文章可以参考,以下会列出几个比较常用的指令作为参考。

    1 jps/jino命令

    • jps指令可以列出操作系统上正在运行的java进程
      jps命令
    • jps -l 指令可以列出操作系统上正在运行的java进程,可以输出主类或jar路径
      jpl -l指令
    • jps -mlvV指令可以输出更详细信息,包括系统参数等
      jps -mlvV指令

    2 jstat指令

    可以通过jstat -options查看jstat可以支持的参数类型
    jista指令
    如采样100次,每次间隔100ms
    jstat -gcutil pid 100 100
    采样100次每次间隔100ms

    3 jmap指令

    jmap指令可以查看堆内存占用的一些情况
    如jmap -histo 33824,查看33824进程的堆占用情况
    jmap指令

    4 jstack指令

    jstack属于线程堆栈分析工具
    如jstack -l 33824,查看进程33824的堆栈信息
    jstack指令

    5 jcmd指令

    jcmd可以理解成前面所有命令的集合。这个指令用的比较多,如果不记得jcmd可以支持哪些参数,可以输入jcmd pid help指令
    jcmd help指令
    jcmd VM.flags指令

    6 jrunscript/jjs指令

    jjs指令是java命令行脚本执行工具,可以解释字形javascript脚本
    jrunscript指令

    2 JVM图形化分析工具

    命令行分析工具虽然能给JVM分析提供方便,但没有图形界面交互风格友好。目前,JVM提供以下几种图形化界面工具可以给开发者分析JVM运行分析。

    1 jconsole工具

    直接在命令界面,输入jconsole命令即可启动jconsole工具(windows系统是在”运行“框输入”cmd",弹出小黑框再输入“jconsole”即可)。jconsole聚焦于监控JVM内存、线程、CPU等使用情况及发展趋势。
    jconsole工具

    2 jvisualvm

    jdk8大概从26开始,jvisualvm都没有被直接打包进jdk,所以直接通过jvisualvm命令,不会打开jvisualvm。可以去官网直接下载jvisualvm工具,下载之后再使用。下载地址为:visualvm.github.io。jvisualvm比较核心的是CPU抽样器。也可以直接点击如下链接进行资源下载
    jvisualvm包下载路径:jvisualvm资源包
    jvisualvm

    3 jmc

    jmc功能非常强大,不仅包括jconsole及jvisualvm功能,还有一个飞行记录的能力,把一段时间段内,JVM的变化记录下来,从而对jvm内部各种状态进行分析(包括内存、cpu)。
    从2020年7月以后,jmc就已经不再打包到jdk,jdk默认不带jmc,所以需要手工下载。
    jmc包下载和使用教程可以参考jmc包和部署教程
    jmc

  • 相关阅读:
    nrf9160做主控连接阿里云(mqtt_simple例程)——附MQTT协议浅解
    顶级手机数据恢复软件 [2024 更新]
    github搜索方法
    【机器学习&数据挖掘】基于自回归积分滑动平均模型的疫情分析报告 附完整python代码
    Unity技术手册 - 创建物体有几种方式?
    【Steam VR 2.X】unity Skeleton Poser 骨骼姿势 编辑好手势后 运行时 抓取姿势会偏
    VMware 安装Ubuntu22.04
    js中的基础知识点 —— BOM
    蓝桥杯[OJ 3791]—珠宝的最大交替和—CPP-贪心
    11.9 知识总结(三板斧、全局配置文件、静态文件的配置、request对象等)
  • 原文地址:https://blog.csdn.net/sunny_daily/article/details/127925865