本文主要解析JVM分析指令-jps/jinfo/jstat/jstack/jmap

jps

英文全名: Java Virtual Machine Process Status Tool
功能: Java虚拟机进程状态工具,正如其名查询虚拟机进程状态的工具,系统层面的工具,故输出的数据都是基础的系统层面数据

指令 显示内容
jps -V pid+VM标识
jps -q pid
jps -l pid + 完全的包名/应用主类名
jps -v pid + 完整启动指令
jps -m pid + 传递给main的参数
jps -V
jps -q
jps -l
jps -v
jps -

jinfo

英文全名: Java Virtual Machine Configuration Information
功能: Java虚拟机配置信息,可以实时查看Java虚拟机各种配置参数和系统属性的命令行工具,可以配合jps获取到pid使用

  1. 查看VM指令的参数
  2. 动态关闭/启用虚拟机配置-并不是所有配置都可以动态修改 java -XX:+PrintFlagsInitial | grep manageable(参考支持动态修改的)
  3. 动态设置虚拟机配置
指令 显示内容
jinfo pid VM所有配置参数与系统属性
jinfo -flag VM指令 pid 查看VM指令情况
jinfo -flag -VM指令 pid 关闭指定的VM指令
jinfo -flag +VM指令 pid 开启指定的VM指令
C:\Users\44349>jinfo -help  //查看帮助文档-windows环境
Usage:jinfo [option] <pid>                    //连接方式 pid(to connect to running process)jinfo [option] <executable <core>         //可执行文件(to connect to a core file)jinfo [option] [server_id@]<remote server IP or hostname> //ip或域名等(to connect to remote debug server)where <option> is one of:-flag <name>         to print the value of the named VM flag     //打印VM指令的参数-flag [+|-]<name>    to enable or disable the named VM flag           //动态关闭/启用虚拟机配置-flag <name>=<value> to set the named VM flag to the given value //动态设置虚拟机配置-flags               to print VM flags                   //打印虚拟机配置-sysprops            to print Java system properties   //打印java系统持续配置<no option>          to print both of the above     //空配置,默认打印上面两个指令数据-h | -help           to print this help message       //打印帮助文档C:\Users\44349>jinfo -flag PrintGC 28692  //查看是否配置了PrintGC
-XX:+PrintGC //有配置
C:\Users\44349>jinfo -flag -PrintGC 28692 //动态关闭PrintGC 配置
C:\Users\44349>jinfo -flag PrintGC 28692 //查看是否配置了PrintGC
-XX:-PrintGC//被关闭了
C:\Users\44349>jinfo -flag +PrintGC 28692//动态打开PrintGC 配置

jstat

英文全名: Monitors Java Virtual Machine (JVM) statistics
功能: 监视Java虚拟机(JVM)统计信息,各种JVM统计数据

指令 显示内容
jstat -class pid 类装载信息
jstat -compiler pid JIT编译类信息
jstat -gc pid GC次数等信息
jstat -gccapacity pid 显示有关世代容量及其相应空间的统计信息
jstat -gccause pid 显示有关垃圾回收统计信息(与 相同)的摘要,以及上次和当前(如果适用)垃圾回收事件的原因
jstat -gcnew pid 显示有关新一代行为的统计信息
jstat -gcnewcapacity pid 显示有关新一代大小及其相应空间的统计信息
jstat -gcold pid 显示有关老一代行为的统计信息和元空间统计信息
jstat -gcoldcapacity pid 显示有关旧一代大小的统计信息
jstat -gcmetacapacity pid 显示有关元空间大小的统计信息
jstat -gcutil pid 显示有关垃圾回收统计信息的摘要
jstat -printcompilation pid 显示 Java 热点虚拟机编译方法统计信息

官网对每个指令描述非常详细: https://docs.oracle.com/en/java/javase/17/docs/specs/man/jstat.html

C:\Users\44349>jstat -gc 20832S0C    S1C    S0U    S1U      EC       EU        OC         OU       MC     MU    CCSC   CCSU   YGC     YGCT    FGC(full gc 次数)   FGCT(full gc 花费时间)     GCT
18432.0 29184.0 18234.5  0.0   572416.0 221287.4  375296.0   35752.8   80384.0 75304.5 10752.0 9807.2     10    0.109   3      0.148    0.258

jstack

英文全名: Java stack
功能: 打印Java程序线程的堆栈跟踪,可以用来查看代码内锁情况

指令 显示内容
jstack -l pid 打印有关锁的附加信息-可以用来查看线程死锁
jstack -m pid 打印Java和本机帧(混合模式)
jstack -F pid 使程序STW执行指令
C:\Users\44349>jstack -h
Usage:jstack [-l] <pid>                   //使用pid指定被执行的java程序(to connect to running process)jstack -F [-m] [-l] <pid>(to connect to a hung process)jstack [-m] [-l] <executable> <core> //使用可执行文件指定被执行的java程序(to connect to a core file)jstack [-m] [-l] [server_id@]<remote server IP or hostname>  //使用Ip或域名等指定被执行的java程序(to connect to a remote debug server)Options:-F  to force a thread dump. Use when jstack <pid> does not respond (process is hung)  //使程序STW执行指令-m  to print both java and native frames (mixed mode)                //打印Java和本机帧(混合模式)-l  long listing. Prints additional information about locks           //打印有关锁的附加信息-可以用来查看线程死锁-h or -help to print this help message

jmap

英文全名: Java Virtual Machine Memory Map
功能: Java虚拟机内存映射,打印详细信息

指令 显示内容
jmap -heap pid heap数据信息
jmap -histo:live pid 打印Java对象堆的直方图;如果指定了"live"子选项,则只计算活动对象
jmap -clstats pid 打印类加载器列表,包括继承了java.lang.ClassLoader
jmap -finalizerinfo pid 打印等待Object.finalize()执行的对象
jmap -dump,format=b,file=保存路径 pid 导出heap数据
C:\Users\44349>jmap -h  //打印帮助文档
Usage:jstack [-l] <pid>                   //使用pid指定被执行的java程序(to connect to running process)jstack -F [-m] [-l] <pid>(to connect to a hung process)jstack [-m] [-l] <executable> <core> //使用可执行文件指定被执行的java程序(to connect to a core file)jstack [-m] [-l] [server_id@]<remote server IP or hostname>  //使用Ip或域名等指定被执行的java程序(to connect to a remote debug server)where <option> is one of:<none>               to print same info as Solaris pmap-heap                to print java heap summary-histo[:live]        to print histogram of java object heap; if the "live"   //打印Java对象堆的直方图;如果指定了"live"子选项,则只计算活动对象suboption is specified, only count live objects-clstats             to print class loader statistics           //打印类加载器列表,包括继承了java.lang.ClassLoader-finalizerinfo       to print information on objects awaiting finalization    //打印等待Object.finalize()执行的对象-dump:<dump-options> to dump java heap in hprof binary format              //导出heap数据dump-options:live         dump only live objects; if not specified,all objects in the heap are dumped.format=b     binary formatfile=<file>  dump heap to <file>Example: jmap -dump:live,format=b,file=heap.bin <pid>   -F                   force. Use with -dump:<dump-options> <pid> or -histo       //STW执行to force a heap dump or histogram when <pid> does notrespond. The "live" suboption is not supportedin this mode.-h | -help           to print this help message-J<flag>             to pass <flag> directly to the runtime system

jcmd

功能: 在看jdk的虚拟线程(可以简单理解成协程)
虚拟线程无法被普通命令直接被检测,jcmd是提供的可观察虚拟线程的工具

指令 显示内容
jcmd Thread.dump_to_file -format=<output_file> 线程信息
jcmd 14136  Thread.dump_to_file -format=json monitor.json

会导出json文件,搜索:ThreadPerTaskExecutor@ 即可看到虚拟线程

JDK17提供的所有tool文档

https://docs.oracle.com/en/java/javase/17/docs/specs/man/index.html

JVM分析指令解析-jps/jinfo/jstat/jstack/jmap/jcmd相关推荐

  1. JVM调优:运行参数,内存模型,mat、jps、jstat、jmap、jstack、jvisualvm工具的使用

    JVM调优 - 工具篇 作者:张学亮 讲解内容 了解下我们为什么要学习JVM优化 掌握jvm的运行参数以及参数的设置 掌握jvm的内存模型(堆内存) 掌握jamp命令的使用以及通过MAT工具进行分析 ...

  2. JDK自带VM分析工具jps,jstat,jmap,jconsole

    一.概述 SUN 的JDK中的几个工具,非常好用.秉承着有免费,不用商用的原则.以下简单介绍一下这几种工具.(注:本文章下的所有工具都存在JDK5.0以上版本的工具集里,同javac一样,不须特意安装 ...

  3. JVM 调优实战--常用JVM命令:jps/jinfo/jstat/jmap/jstack/jhat

    jps:查看jvm进程: jinfo:查看完整jvm参数信息: jstat:查看堆内存使用情况,加载的class数量及大小.-gc查看垃圾回收统计: jmap:查看堆内存使用情况,jstat是统计,j ...

  4. GC调优基础知识之工具篇--jdk为我们提供的命令行命令 jps,jstat,jmap,jinfo,jstat,jstack,jhat 等

    一. JDK为我们提供的工具:    在Windows中对于这些命令的支持是源自JDK -->bin下面的.exe可执行文件的支持.    在Linux中对于这些命令的支持是源自JDK --&g ...

  5. java 内存溢出 jstack,Java——命令jps、jstat、jmap、jstack、jhat、jinfo

    JAVA_HOME/bin/ 目录下jdk提供了很多自带工具,下面以tomcat下的web项目为例.如果感觉输出内容太多可以使用 xxx | head -n 20 显示输出内容的头20行. jps j ...

  6. Java——命令jps、jstat、jmap、jstack、jhat、jinfo

    JAVA_HOME/bin/ 目录下jdk提供了很多自带工具,下面以tomcat下的web项目为例.如果感觉输出内容太多可以使用 xxx | head -n 20 显示输出内容的头20行. jps j ...

  7. 现网问题排查实战:Jstat,Jstack,Jmap

    遇到问题怎么办: 查看日志tail -f catalina.out 查看应用进程 ps -ef | grep java 查看CPU情况 查看TCP情况 ping 查看java线程,jstack 查看j ...

  8. jps,jstat,jinfo,jstack,jmap,jhat

    基础故障处理工具jps,jstat,jinfo,jstack,jmap,jhat jps:虚拟机进程状况工具 JDK的很多小工具的名字都参考了UNIX命令的命名方式,jps(JVM Process S ...

  9. JVM性能调优监控工具专题一:JVM自带性能调优工具(jps,jstack,jmap,jhat,jstat,hprof)...

    2019独角兽企业重金招聘Python工程师标准>>> 前提概要:         JDK本身提供了很多方便的JVM性能调优监控工具,除了集成式的VisualVM和jConsole外 ...

最新文章

  1. 视频写操作,通道分离与合并
  2. 2021-06-082021年春季学期-信号与系统-第十五次作业-第四小题参考答案
  3. AI能写出靠谱医学报告了,CVPR2021收录 | 腾讯医典出品
  4. UVA-10714 Ants---蚂蚁模拟
  5. pandas 索引_Pandas学习笔记03数据清洗(通过索引选择数据)
  6. 微信公众平台“自定义回复”技巧
  7. linux中vi过滤,vim高级编辑(一)
  8. Java 学习笔记之 线程安全
  9. 随想录(关于ucore)
  10. 《深入浅出通信原理》读书笔记系列1-第2章 信号与频谱
  11. [ArcPy百科]第一节:何为arcpy
  12. AD格式生产文件Gerber文件的制作
  13. HTML 计算机代码
  14. Oliver的救援--SSL 2278
  15. JS判断字符串是否含有某个值
  16. 定制材料 GPTMS修饰的纳米二氧化硅(GPTMS-SiO2)/C18键合纳米金修饰二氧化硅颗粒/二氧化硅修饰咪唑型离子液体
  17. 输入远程计算机地址后,不提示输入用户名密码直接进入计算机怎么回事,解决Windows远程桌面连接每次都提示输入密码的问题...
  18. ArcGIS如何获取地理要素的几何属性
  19. 网络系统管理 - C模块 - Centos7.9 - Iptables
  20. Advanced IP Scanner教程 详细使用方法

热门文章

  1. 数字孪生“警视” 警务情指一体可视化决策系统
  2. 程序控制(ISO14229系列之31服务)
  3. 我忘了你是谁-非主流留言
  4. Yarn 和 NPM 国内镜像(淘宝镜像)
  5. 优漫动游:什么是ui设计?UI设计是什么样子的工作内容?
  6. word的html超链接怎么弄,Word 2016
  7. Linux下的压缩解压缩命令
  8. Zbrush学习笔记七——阵列网格对象、布尔运算、Polypainter、聚光灯
  9. 记录生产问题之Excel模板文件下载
  10. CSS Float布局过程