JVM性能分析——jdk 自带命令分析工具(jps/jstat/jinfo/jmap/jhat/jstack)

JVM性能分析——jps/jstat/jinfo/jmap/jhat/jstack 命令、JConsole/JVisualVM/JProfiler 可视化工具与 Arthas 命令交互工具 Arthas 是一款线上监控诊断产品,通过全局视角实时查看应用 load、内存、gc、线程的状态信息,并能在不修改应用代码的情况下,对业务问题进行诊断,包括查看方法调用的出入参、异常,监测方法执行耗时,类加载信息等,大大提升线上问题排查效率。开发人员可以在线解决生产问题,无需 JVM 重启,无需代码更改。Arthas 作为观察者永远不会暂停正在运行的线程。实时监控:可以动态查看 JVM 的运行状态,包括线程、内存、CPU等,其实就是包装了 jdk 的命令行工具,从而提供了丰富的命令集; 阅读详情
AI摘要

本文详细介绍JDK自带的多个实用工具,包括jps、jstat、jinfo、jmap、jhat和jstack的功能与使用方法,帮助开发者更好地监控和调试Java应用。

在 windows 环境下演示

jps(Java Process Status):查看正在运行的Java进程

1、查看正在运行的Java进程:jps(Java Process Status)

在这里插入图片描述

jstat(JVM Statistics Monitoring Tool):查看 JVM 的统计信息

查看内存使用情况,分析堆中各部分使用情况、过程变化、GC 时间等。

在生产环境中,可以执行 jstat 命令,快速收集应用程序的运行数据,可以快速了解应用程序的运行状况,有助于在线上问题发生时进行快速诊断和分析。通过查看内存区域的容量和利用率,可以发现内存泄漏和溢出等问题以及优化应用程序的内存管理;还可以帮助开发者快速定位 GC 相关的性能瓶颈。通常结合其他监控工具(如 JConsole、VisualVM、Jprofiler 等)使用。

jstat -<option> [-t] [-h<lines>] <vmid> [<interval> [<count>]]

参数解释:
	<option>:指定要显示的性能指标,如 -gc、-gccapacity、-gcutil 等
	-t:在输出中显示时间戳,显示程序运行的时间
	-h<lines>:每隔多少行输出一个表头
	<vmid>:Java 虚拟机进程 ID
	<interval>:输出间隔,单位为毫秒,每隔多长时间输出一次
	<count>:指定输出的总次数
	
常用选项及含义:
	-gc:显示与GC相关的堆信息,Eden、Suvivor、老年代等空间使用情况及GC次数、时间相关信息
	-gccapacity:与-gc基本相同,但关注Java堆各个区域使用的最大、最小空间,可以查看内存池的配置和使用情况。
	-gcutil:与-gc基本相同,但关注空间使用百分比
	-class:类加载统计相关信息
	-compiler:JIT 编译器统计
	-printcompilation:方法编译统计

如:jstat -gc 12345 1000 10:每秒输出一次,共输出10次,PID 为 12345 的 Java 进程的垃圾收集统计信息。

帮助:
在这里插入图片描述
示例:
在这里插入图片描述

jstat -gc 29336 的输出字段:
	S0C、S1C:Survivor 0 和 Survivor 1 区域的当前容量(KB)
	S0U、S1U:Survivor 0 和 Survivor 1 区域的已使用空间(KB)
	EC:Eden 区域的当前容量(KB)
	EU:Eden 区域的已使用空间(KB)
	OC:Old 区域的当前容量(KB)
	OU:Old 区域的已使用空间(KB)
	MC:元空间的当前容量(KB)
	MU:元空间的已使用空间(KB)
	CCSC:压缩类空间的当前容量(KB)
	CCSU:压缩类空间的已使用空间(KB)
	YGC:Young GC 事件的次数
	YGCT:Young GC 事件的总时间(秒)
	FGC:Full GC 事件的次数
	FGCT:Full GC 事件的总时间(秒)
	GCT:GC 总时间(秒)
jstat -gccapacity 29336 的输出字段:
	NGCMN、NGCMX、NGC:新生代最小容量、最大容量和当前容量
	S0C、S1C、EC:Survivor 0、Survivor 1 和 Eden 区域的当前容量
	OGCMN、OGCMX、OGC、OC:Old 代最小容量、最大容量、当前容量和容量
	MCMN、MCMX、MC:元空间最小容量、最大容量和当前容量
	CCSMN、CCSMX、CCSC:压缩类空间最小容量、最大容量和当前容量
	YGC、FGC:Young GC 和 Full GC 事件的次数
jstat -gcutil 29336 的输出字段:
	S0、S1、E、O、M、CCS:Survivor 0、Survivor 1、Eden、Old、元空间、压缩类空间 区域的利用率
	YGC、YGCT:Young GC 事件的次数和总时间
	FGC、FGCT:Full GC 事件的次数和总时间
	GCT:GC 总时间

jinfo(Configuration Info for Java):实时查看和修改JVM配置参数

可以在生产环境中远程执行 jinfo 命令,收集应用程序的配置信息,查看正在运行的虚拟机配置参数;也可以用于部分虚拟机参数的在线调整,在不重启应用程序的情况下,动态地修改 Java 虚拟机参数。

帮助:
在这里插入图片描述
示例:
在这里插入图片描述

扩展查看命令:

  • java -XX:+PrintFlagsInitial —— 查看所有JVM参数启动的初始值

  • java -XX:+PrintFlagsFinal —— 查看所有JVM参数的最终值

  • java -XX:+PrintCommandLineflags —— 查看那些已经被用户或者VM设置过的详细的XX参数的名称和值

    如:java -XX:+PrintFlagsFinal > output.txt,这里为了方便查看,将查询结果输出到指定的文件中。
    在这里插入图片描述

jmap(JVM Memory Map):导出内存映像文件和查看内存使用情况

可以在应用程序运行时生成内存快照文件(xx.hprof 文件),这些快照可用于离线分析应用程序的内存使用情况。可以看看这篇文章 使用 JProfiler 工具分析 dump.hprof 堆内存快照文件排查内存溢出问题。

  1. 导出 dump 文件(堆转储快照文件,.hprof),(重点关注)
  2. 查看内存的相关信息

1、导出 dump 文件(堆转储快照文件,.hprof)

手动的方式,通过命令调用实时触发导出。
	jmap -dump:format=b,file=<filename.hprof> <pid>,导出所有对象。
	jmap -dump:live,format=b,file=<filename.hprof> <pid>,只导出存活的对象。
	
自动的方式,配置对应的 JVM 参数,会在内存溢出的时候自动触发导出。
	-XX:+HeapDumponOutOfMemoryError,开启内存溢出时导出 dump 文件。
	-XX:HeapDumpPath= <filename.hprof>,dump 文件导出路径。

帮助:
在这里插入图片描述
示例:
只导出存活的对象,导出路径为 F:\logs\jmap_dump.hprof
在这里插入图片描述
在这里插入图片描述

2、查看内存的相关信息

jmap -heap pid —— 查看堆内存相关信息,和 jstat 的功能有点类似。

为了方便查看,这里将打印的堆内存信息输出到指定的文件中,F:\logs\heap.txt
在这里插入图片描述
在这里插入图片描述

jmap -histo pid —— 当前对象集的相关信息,类、类的实例个数、占用内存大小。

在这里插入图片描述
为了方便查看,这里将打印的堆内存信息输出到指定的文件中,F:\logs\histo.txt。可以查看到各个类的实例对象个数、各类的所有实例对象占用的内存大小。
在这里插入图片描述

jhat(JVM Heap Analysis Tool):堆分析工具

jhat 命令与 jmap 命令搭配使用,用于分析 jmap 生成的 heap dump 文件,通过 jhat 提供的 Web 界面,可以对内存快照进行交互式的分析和浏览。可以生成内存快照中的对象统计报告、分析内存快照中对象之间的引用关系、支持 Java 对象查询语言(OQL)等,可以帮助开发者快速定位内存泄漏等问题。

使用这个命令分析起来比较麻烦,jhat 令在 JDK9、JDK10 中已经被删除,官方建议用 visualVM 代替,visualVM 是一个图形化界面分析更方便;也可以使用其他工具,如 jprofiler,可以看看这篇文章 使用 JProfiler 工具分析 dump.hprof 堆内存快照文件排查内存溢出问题,是如何使用工具分析 dump 堆内存快照文件来分析排查问题。
帮助:
在这里插入图片描述
示例:打开指定 dump 文件。
在这里插入图片描述
上述命令运行,服务启动完后,进入 http://localhost:7000/ 页面可以查看指定类、实例对象相关信息,端口号默认为 7000
在这里插入图片描述

jstack(JVM Stack Trace):打印 JVM 中线程快照

jstack 用于生成虚拟机指定进程当前时刻的线程快照(虚拟机堆栈跟踪)。线程快照就是当前虚拟机内指定进程的每一条线程正在执行的方法堆栈的集合。

生成线程快照可用于定位线程出现长时间停顿的原因,如线程间死锁、死循环、请求外部资源导致的长时间等待等问题。这些都是导致线程长时间停顿的常见原因。当线程出现停顿时,就可以用 jstack 显示各个线程调用的堆栈情况以及线程运行状态。

帮助:
在这里插入图片描述
示例:
在这里插入图片描述

JVM-常用工具(jps、jstat、jinfo、jmap、jhat、jstack、jconsole、jvisualvm)使用 记录JVM中常用工具。 阅读详情

相关推荐

Circos在Windows下的安装教程

这里写自定义目录标题Circos简介安装Perl 的安装Circos安装安装及解压安装Modules测试用例官方文档 Circos简介 (来源官网:http://circos.ca/software/readme/ O.INTRODUCTION部分) Circos is a program for the generation of publication-quality, circularly composited renditions of genomic data and related annot

qq_42318911的博客 1661

一文讲解JDK自带监控工具查看 JVM 情况

本文主要介绍:常用的JDK 自带监控工具

weixin_54828627的博客 2080

loadStop的原因导致的SSUSP

Total内存值是可用来调度的可用内存,当前可用内存为 0M。 loadSched和loadStop的阈值是根据 Total 内存和节点内存来做限制的。 loadStop 50G,现在有大量作业SSUSP,说明之前某个时间点该节点内存可能有低于50G的时候,导致作业SSUSP,具体是否是这个原因引起的需要用 bjobs -l JobID 看下作业的详细信息。 如果是loadStop的原因导致的 SSUSP,根据loadStop设置的阈值,Total 值高于loadStop值后,将逐步恢复挂起的作业

Blueberry521的博客 667

JDK自带JVM分析工具

JVM工具

m0_37840000的博客 3565

Python 映射函数map()详解

Python 映射函数map()详解

分享我的点点滴滴,在成长路上与你同行! 2140

Android定位权限全解析:从基础配置到后台持续定位的完整解决方案

本文全面解析Android定位权限体系,从基础配置到后台持续定位的完整解决方案。涵盖LocationManager和FusedLocationProviderClient等主流API的对比选型,详细讲解动态权限申请、精确定位与模糊定位的智能切换,以及Android 10+的后台定位适配策略。帮助开发者构建兼顾精准度与电量友好的定位方案,适用于导航、运动轨迹记录等多种场景。

weixin_29310605的博客 611

十一、JVM 监控工具

Arthas是Alibaba开源的Java诊断工具,在线排查问题,无需重启;动态跟踪Java代码;实时监控JVM状态。Arthas 支持JDK 6+,支持Linux/Mac/Windows,采用命令行交互模式,同时提供丰富的 Tab 自动补全功能,进一步方便进行问题的定位和诊断。MAT 支持一种类似于 SQL 的查询语句 OQL,可以在堆中进行对象的查找和筛选。💡 自行了解吧,跟 sql 差不多。

qq_43530416的博客 994

机器人中的数值优化(十二)——带约束优化问题简介、LP线性规划

本系列文章主要是我在学习《数值优化》过程中的一些笔记和相关思考,主要的学习资料是深蓝学院的课程《机器人中的数值优化》和高立编著的《数值最优化方法》等,本系列文章篇数较多,不定期更新,上半部分介绍无约束优化,下半部分介绍带约束的优化,中间会穿插一些路径规划方面的应用实例

慕羽★的博客 3851

常用的JDK调优&监控工具整理

VisualVM 是一款免费的性能分析工具。它通过 jvmstat、JMX、SA(Serviceability Agent)以及 Attach API 等多种方式从程序运行时获得实时数据,从而进行动态的性能分析。同时,它能自动选择更快更轻量级的技术尽量减少性能分析对应用程序造成的影响,提高性能分析的精度。

不会骑摩托的程序员不是好的摄影师 2832

SOMEIP协议--第三节[SOMEIP/SD](SD格式)

Entry和Option是SD报文中最重要的内容,是服务发现功能的承载。7.Minor Version是指当前服务的小版本号,可以配置,用于给用户区分当前服务的版本用的。注意:stop offer,stop subscribe,Subscribe Nack 这三条的TTL一定设为0,唯一和offer,subscribe,Subscribe的区别。Option用来辅助Entry实现其功能,是Entry携带的附加信息,作用上一般是用来告诉对端自己业务的ip和port信息,方便对端通过ip和port发送报文。

qq_41816308的博客 1340

硬件基础知识-电机知识

步进电机存在空载启动频率,所以步进电机可以低速正常运转,但若高于一定速度时就无法启动,并伴有尖锐的啸叫声;在非超载的情况下,电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数。给电机两根线供电,电机就可以旋转,给正电压,电机正转,给相反电压,电机反转;电压越大,电机转得越快,电压越小,转速也变小。是一种直流电机,有刷电机的定子上安装有固定的主磁极和电刷,转子上安装有电枢绕组和换向器。控制器:使用专用的电子控制器来监测和控制电机的转速、电流和方向。线圈电流方向的交替变化是随电机转动的换相器和电刷来完成的。

weixin_46969363的博客 2296

Java命令学习系列(二)——Jstack

jstack是java虚拟机自带的一种堆栈跟踪工具。 功能 jstack用于生成java虚拟机当前时刻的线程快照。线程快照是当前java虚拟机内每一条线程正在执行的方法堆栈的集合,生成线程快照的主要目的是定位线程出现长时间停顿的原因,如线程间死锁、死循环、请求外部资源导致的长时间等待等。 线程出现停顿的时候通过jstack来查看各个线程的调用堆栈,就可以知道没有响应的线程到底在后台做什么事情,...

weixin_34392435的博客 282

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

jvm性能监控工具(jps、jstat、jinfo、jmap、jhat、jstack、jvisualvm和jconsole)介绍及示例

JDK本身提供了很多方便的JVM性能调优监控工具,除了jps、jstat、jinfo、jmap、jhat、jstack等小巧的工具,还有集成式的jvisualvm和jconsole。这些工具在 $JAVA_HOME/bin目录下。

alanchanchn的专栏 8万+

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

JVM 性能调优 -- JVM常用调优工具【jps、jstack、jmap、jstats 命令】

总结:本篇分享 JDK 自带的一些 JVM 调优工具的使用,使用 jps、jinfo、jmap、jstack、jhat、jstat 命令来查看 Java 应用程序的堆栈信息,来辅助我们进行 JVM 调优,关于可视化工具的部分我们下一篇再来分享,希望可以帮助到有需要的朋友们。可以看到执行 jinfo 命令打印了非常多的信息,包括 Java 版本、环境信息、JVM 参数等非常多的信息,这些信息并不是我们都要关注的,如果我们想要少看到一些信息,可以使用 jinfo -flags 线程pid 命令。

weixin_42118323的博客 2416

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Java基础JDK命令行工具(jps,jstat,jinfo,jmap,jhat,jstack)

Java基础JDK命令工具总结,包括jps,jstat,jinfo,jmap,jhat,jstack命令。

孤夜的博客 3908

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

JAVA_HOME/bin/ 目录下jdk提供了很多自带工具,下面以tomcat下的web项目为例。如果感觉输出内容太多可以使用 xxx | head -n 20 显示输出内容的头20行。jpsjps:显示当前用户的所有java进程的PID jps -helpusage: jps [-help] jps [-q] [-mlvV] [<hostid>]Definitions:

学习印记 Learning imprint 2836

JVM的常用性能监控工具jps、jstat、jinfo、jmap、jhat、jstack

JPS jstat jinfo jmap java内存映象工具 jhat jstack(java堆栈跟踪工具) 参考链接 jvm系列五:监测命令(jvisualvm jps jstat jmap jhat jstack jinfo)及dump堆内存快照分析 给虚拟机定位问题之前需要有一定的虚拟机基础,比如说内存分配与回收技术。 给一个系统定位问题的时候,知识,经...

madman 2169

JVM 调优监控内置工具 jps、jstack、jmap、jhat、jstat、hprof 使用详解

JDK 内置命令行工具 这些命令在 JDK 安装目录下的 bin 目录下: jps (JVM Process Status): 类似 UNIX 的 ps 命令。用于查看所有 Java 进程的启动类、传入参数和 Java 虚拟机参数等信息; jstat(JVM Statistics Monitoring Tool): 用于收集 HotSpot 虚拟机各方面的运行数据; jinfo (Configuration Info for Java) : Configuration Info for Java,显示虚拟

LoveSummer 2825

用得上的jstat,jinfo,jmap,jhat,jstack

文章目录jps1.常用命令2.实战jinfo1.常用命令参数2.实战输出指定参数输出所有默认参数和设置的参数开启关闭指定参数动态修改指定参数jmap1. 常用命令参数2. 实战转存dump文件。打印等待回收对象打印heap重要信息打印class信息jhatjstack1. 常用命令参数2. 实战强制输出线程堆栈输出堆栈信息和锁的信息jstat1.常用命令参数2.实战类加载统计:编译统计垃圾回收统计堆内存统计新生代垃圾回收统计新生代内存统计老年代内存统计元数据空间统计总垃圾回收统计垃圾回收原因 内容大纲:

南山饱虎的博客 2752

java8的jps,jstat,jstack,jmp,jinfo,jhat使用详解及Java自带可视化监控与故障分析工具的介绍

概述 JDK提供的免费的JVM监控与故障处理工具有: jps:JVM Process Status Tool, 显示指定系统内所有的HotSpot虚拟机进程jstat:JVM Statistics Monitoring Tool, 用于收集HotSpot虚拟机各方面的运行数据jinfo:Configuration Info for java,显示虚拟机配置信息.jmap:Memory

A_zhenzhen的专栏 4641

JVM虚拟机系统性学习-JVM相关工具jps、jstat、jinfo、jmap、jhat和jstack

jhat 命令会解析 Java 堆转储文件,并且启动一个 web server,再用浏览器就可以查看 dump 出来的 heap 二进制文件。用于生成 Java 虚拟机当前时刻的线程快照,生成线程快照的主要目的是定位线程出现长时间停顿的原因。查看 Java 程序运行时相关信息,可以查看运行时堆的相关情况。命令,就可以启动一个 web server,用浏览器访问即可。查看堆内存使用情况,一般结合 jhat 使用。查看正在运行的 Java 程序的扩展参数。可以在 jvm 运行时获取 dump。

qq_45260619的博客 1116

jvm性能监控、故障处理命令行工具详解(jps、jstat、jinfo、jmap、jhat、jstack)(宝藏博文)

所有的java命令都可以使用-help或者-option查看帮助、选项,类似于linux系统命令的–help。注!其中大部分命令在jdk9中被集成到了jhsdb命令中了!

秃了也弱了 1394

JDK自带调优五件套(Jstat/Jinfo/Jmap/Jhat/Jstack)深度解析+实战指南

本文深入解析JDK自带的5款JVM调优工具(Jstat、Jinfo、Jmap、Jhat、Jstack),帮助开发者高效定位线上系统性能问题。Jstat实时监控GC状态,Jinfo查看修改JVM参数,Jmap生成内存快照,Jhat分析堆内存泄漏,Jstack诊断线程死锁。通过企业级实战案例,展示工具协同使用流程,并给出缓存优化等解决方案。这些轻量级工具无需额外部署,是Java开发者必备的性能调优利器,能有效应对内存泄漏、CPU过载等常见问题。

果酱 の 博客 988

JVM性能调优监控工具jps、jstat、jinfo、jmap、jhat、jstack使用详解

除了集成式的VisualVM和JConsole外,JDK本身还提供了如jps、jstack、jmap、jhat、jstat等性能调优监控工具。在Java开发中,有时候我们会碰到下面这些问题:OutOfMemoryError,内存不足内存泄露线程死锁锁争用(Lock Contention)Java进程消耗CPU过高……这些问题在日常开发中可能被很多人忽视(比如有的人遇到上面的问题只是重启服务器或者调大

JavaSheng的专栏 3118
上一篇: JVM性能分析——JVM内存结构(运行时数据区)
下一篇: mysql 命令 —— 查看表信息(show table status)
ShareBeHappy_Qin
博客等级 码龄9年 2321粉丝 137原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值