JVM调优小工具之jstat

JVM调优 jstat 与 jstack 它能帮助你诊断挂起(hang)或响应慢的应用程序,通过展示每个线程的堆栈跟踪信息,可以分析线程的状态以及它们在做什么。是一个命令行工具,用于监控正在运行的 Java 虚拟机(JVM)的性能。输出将包含每个线程的堆栈跟踪,包括线程 ID、线程名称、线程状态以及调用栈。通过分析这些信息,你可以判断哪些线程处于阻塞状态、哪些线程持有锁、哪些线程可能造成死锁等。首先,你需要启动一个 Java 应用程序,确保你知道该应用程序的进程 ID(PID)。是你的 Java 进程的 PID。是你的 Java 进程的 PID。 阅读详情

JVM调优小工具之jstat

jstat是什么?

jstat(JVM statistics Monitoring Tool)是JDK自带的用于查看虚拟机各种运行状态信息的命令行工具,常用于在运行期定位虚拟机性能问题。它可以显示本地或远程虚拟机中的类加载、内存、垃圾回收、即时编译等运行时数据。

jstat使用方法

命令格式: jstat -<option> [-t] [-h<lines>] <vmid> [<interval> [<count>]]

参数作用
-t在第一列输出时间戳。时间戳是自目标JVM启动时间以来的时间。
-h n周期性输出数据的时候,每隔n次输出一次表头 ;默认n=0,表示只在第一列输出表头
vmid如果是本地虚拟机进程,则与LVMID一致,可使用jps命令进行查看;
如果是远程虚拟机进程,其格式则为:
[protocol:][//]lvmid[@hostname[:port]/servername]
interval输出间隔
count输出次数 ,不加时会一直输出

options: JDK版本不同,其选项可能会有细微差别。

options作用
-class查看类加载数、卸载数、占用空间、类装载耗费的时间
-compiler查看即时编译过的方法、耗时
-gc查看Java堆各个区的总空间、已用空间、垃圾收集耗费的时间
-gcutil与-gc类似,主要关注各个区空间使用百分比
-gccapacity与-gc类似,但主要关注运行过程中各个区的最大使用空间、最小使用空间
-gccause与-gcutil类似,但会额外输出导致最后一次GC的原因
-gcmetacapacity元空间最大最小空间
-gcnew监视新生代垃圾收集状况
-gcnewcapacity与-gcnew类似,主要关注最大最小空间
-gcold监视老年代垃圾收集情况
-gcoldcapacity与-gcold类似,主要关注最大最小空间
-printcompilation输出已被即时编译的方法
使用示例
  1. jstat -class 11146: 查看类加载信息(先使用jps查询出LVMID)
david@UX501:~$ jps
11175 Jps
11146 Test
david@UX501:~$ jstat -class 11146
Loaded  Bytes  Unloaded  Bytes     Time   
405     833.7  0         0.0       0.03
字段含义
Loaded已加载类的数量
Bytes已加载类的大小
Unloaded已卸载类的数量
Bytes已卸载类的大小
Time执行类加载和卸载操作所花费的总时间
  1. jstat -compiler 11146 : 查看HotSpot VM即时编译统计信息。
david@UX501:~$ jstat -compiler 11146
Compiled  Failed  Invalid   Time   FailedType FailedMethod
90        0       0         0.10   0             
字段含义
Compiled编译成功次数
Failed编译失败次数
Invalid编译无效次数
Time即时编译耗费的时间
FailedType上一次编译失败的编译类型
FailedMethod上一次编译失败的类名和方法名
  1. jstat -gc 11146: 查看GC相关的统计信息
david@UX501:~$ jstat -gc 11146
 S0C    S1C    S0U    S1U      EC       EU        OC         OU       MC     MU     CCSC   CCSU   YGC     YGCT    FGC    FGCT     GCT   
7680.0 7680.0  0.0    0.0   48640.0  15693.4   128512.0     0.0     4480.0   777.9  384.0   74.5   0      0.000   0      0.000    0.000
字段含义
S0C当前S0容量(kB)
S1C当前S1的容量(kB)
S0US0已用空间(kB)
S1US1已用空间(kB)
ECEden区容量(kB)
EUEden区已用空间(kB)
OC老年代容量(kB)
OU老年代已用空间(kB)
MC元空间容量(kB)
MU元空间已用空间(kB)
CCSC压缩类空间容量(kB)
CCSU已使用的压缩类空间大小(kB)
YGCYGC次数
YGCTYGC耗费总时间
FGCFGC次数
FGCTFGC耗费总时间
GCTGC耗费的时间总和
  1. jstat -gccapacity 11146: 显示各个区的容量及相应空间统计信息
david@UX501:~$ jstat -gccapacity 11146
NGCMN    NGCMX     NGC     S0C    S1C     EC        OGCMN     OGCMX       OGC        OC         MCMN     MCMX        MC       CCSMN    CCSMX       CCSC    YGC    FGC 
64000.0 1018880.0  64000.0 7680.0 7680.0  48640.0   128512.0  2038784.0   128512.0   128512.0   0.0      1056768.0   4480.0   0.0      1048576.0   384.0   0      0
字段含义
NGCMN最小新生代容量 (kB).
NGCMX最大新生代容量 (kB).
NGC当前新生代容量 (kB).
S0C当前S0容量 (kB).
S1C当前S1容量 (kB).
EC当前Eden区容量 (kB).
OGCMN最小老年代容量 (kB).
OGCMX最大老年代容量 (kB).
OGC当前老年代容量 (kB).
OC当前老年代容量 (kB).
MCMN最小元空间容量 (kB).
MCMX最大元空间容量 (kB).
MC元空间容量 (kB).
CCSMN最小类压缩空间容量 (kB).
CCSMX最大类压缩空间容量 (kB).
CCSC类压缩容量 (kB).
YGCYGC次数
FGCFGC次数
  1. jstat -gccause 11146: 显示有关GC相关的统计(与相同-gcutil),以及最近和当前(如果适用)GC原因。
david@UX501:~$ jstat -gccause 11146
S0     S1     E      O      M     CCS    YGC  YGCT    FGC    FGCT     GCT     LGCC    GCC                 
0.00   0.00  64.37   0.00  17.36  19.39  0    0.000   0      0.000    0.000   No GC   No GC 
字段含义
LGCC上一次GC原因
GCC当前GC原因
其它字段与-gcutil查询出的信息相同
  1. jstat -gcnew 11146: 查看与新生代相关的统计数据
david@UX501:~$ jstat -gcnew 11146
S0C    S1C      S0U    S1U   TT  MTT  DSS    EC       EU       YGC    YGCT  
7680.0 7680.0   0.0    0.0   15  15   0.0    48640.0  34228.2   0     0.000
字段含义
S0C当前S0容量(kB)
S1C当前S1的容量(kB)
S0US0已使用(kB)
S1US1已使用(kB)
TT持有次数
MTT最大持有次数
DSS所需的幸存者大小(kB)
EC当前Eden区容量(kB)
EUEden区已用(kB)
YGCYGC次数
YGCTYGC消耗的时间
  1. jstat -gcnewcapacity 11146: 新生代空间统计
david@UX501:~$ jstat -gcnewcapacity 11146
NGCMN      NGCMX       NGC      S0CMX     S0C     S1CMX     S1C       ECMX        EC      YGC   FGC 
64000.0   1018880.0   64000.0  339456.0   7680.0 339456.0   7680.0  1017856.0    48640.0   0     0
字段含义
NGCMN新生代最小容量 (kB).
NGCMX新生代最大容量(kB).
NGC当前新生代容量 (kB).
S0CMXS0最大容量(kB).
S0C当前S0容量 (kB).
S1CMXS1最大容量 (kB).
S1C当前S1容量 (kB).
ECMXEden区最大容量 (kB).
EC当前Eden区容量 (kB).
YGCYGC次数
FGCFGC次数
  1. jstat -gcold 11146: 查看老年代和元空间相关统计
david@UX501:~$ jstat -gcold 11146
MC       MU      CCSC     CCSU       OC          OU       YGC    FGC    FGCT     GCT   
4480.0   777.9   384.0    74.5     128512.0      0.0       0      0    0.000    0.000
字段含义
MC元空间容量大小 (kB).
MU元空间已用大小 (kB).
CCSC类压缩空间容量 (kB).
CCSU类压缩空间已用大小(kB).
OC老年代容量 (kB).
OU老年代空间已用大小 (kB).
YGCYGC次数
FGCFGC次数
FGCTFGC耗费的时间
GCTGC耗费总时间
  1. jstat -gcoldcapacity 11146: 查看老年代有关容量的统计信息
david@UX501:~$ jstat -gcoldcapacity 11146
OGCMN       OGCMX        OGC         OC       YGC   FGC    FGCT     GCT   
128512.0   2038784.0    128512.0    128512.0   0     0     0.000    0.000
字段含义
OGCMN老年代最小容量 (kB)
OGCMX老年代最大容量(kB)
OGC老年代当前容量 (kB)
OC老年代当前容量 (kB)
YGCYGC次数
FGCFGC次数
FGCTFGC消耗的时间
GCTGC总耗时
  1. jstat -gcmetacapacity 11146: 有关元空间容量大小统计信息
david@UX501:~$ jstat -gcmetacapacity 11146
   MCMN       MCMX        MC       CCSMN      CCSMX       CCSC     YGC   FGC    FGCT     GCT   
    0.0     1056768.0    4864.0     0.0      1048576.0    512.0     1     0    0.000    0.025
字段含义
MCMN元空间最小容量 (kB).
MCMX元空间最大容量 (kB).
MC元空间容量 (kB).
CCSMN类压缩空间最小容量 (kB).
CCSMX类压缩空间最大容量 (kB).
YGCYGC次数
FGCFGC次数
FGCTFGC消耗的时间
GCTGC耗费总时间
  1. jstat -gcutil 11146: 查看GC统计摘要
david@UX501:~$ jstat -gcutil 11146
  S0     S1     E      O      M     CCS    YGC     YGCT    FGC    FGCT     GCT   
  0.00  99.79  21.78   6.18  53.48  52.75    1     0.025     0    0.000    0.025
字段含义
S0S0已用空间 (%)
S1S1已用空间 (%)
EEden已用空间 (%)
O老年代已用空间 (%)
M元空间已用空间 (%)
CCS已用类压缩空间 (%)
YGCYGC次数
YGCTYGC耗费的时间
FGCFGC次数
FGCTFGC耗费的时间
GCTGC耗费的总时间
  1. jstat -printcompilation 11146: 查看即时编译相关的统计信息
david@UX501:~$ jstat -printcompilation 11146
Compiled  Size  Type Method
105       38    1 	 java/io/PrintStream println
字段含义
Compiled最近编译的方法执行的编译任务数
Size最近编译的方法的字节码的字节数
Type最近编译方法的编译类型
Method最近编译的方法的类名和方法名
参考资料

Oracle官方文档–jstat

注: 未经授权,禁止转载

JVM 性能调优监控工具之jstat(JVM统计监测工具) JVM 性能调优监控工具之jstat(JVM统计监测工具) 文章目录JVM 性能调优监控工具之jstat(JVM统计监测工具)前言一、什么是jstat?二、简介2.语法格式如下总结 前言 提示:以下是本篇文章正文内容,下面案例可供参考 一、什么是jstat? Jstat是JDK自带的一个轻量级小工具。全称“Java Virtual Machine statistics monitoring tool”,中文名字“java虚拟机统计信息工具”。 二、简介 Jstat位于java的bin目录下,主要利用 阅读详情

相关推荐

如何应对面试官的JVM调优问题

为什么要进行JVM调优 我猜你肯定是为了面试,现在很多公司都会问这个,虽然你工作了N年JVM调优可能都不会接触到,但我觉得还是有考察的必要的。因为很多时候我们考察一个人不光要考察他的硬实力,还要看他有没有持续学习、深入研究的精神,一只咸鱼是不会看JVM调优的。 JVM调优真的有用吗?能解决什么问题? 用肯定是有用的。但是,默认的大部分情况是足够你用的,出了问题应该先从程序找问题,不要让JVM背锅好吗? 如何应对面试官问的JVM调优的问题 我觉得应该很少有面试官会上来就问JVM调优怎么调,毕竟这显得有点奇怪

诺浅的专栏 8730

jvm工具(二)jstat

详见:http://docs.oracle.com/javase/6/docs/technotes/tools/share/jstat.html http://docs.oracle.com/javase/8/docs/technotes/tools/windows/jstat.html   二、JVM统计监控工具 jstat [ generalOption | outputOption

JAVA 241

jstat官方介绍

jstat - Java Virtual Machine Statistics Monitoring Tool jstat官方介绍

JVM调优实践:记录初次JVM调优经历

JVM调优实践:记录初次JVM调优经历前言JVM调优工具参考文章初步调优基本指令选择垃圾收集器初步确定堆大小 前言 之前关于 JVM 调优大部分都只是一些理论依据,具体经验没有,这回正好记录下。 中间一些碰壁与返工的部分就跳过了。 JVM调优工具 jps: 用来显示本地的java进程,可以查看本地运行着几个java程序,并显示他们的进程号。 jinfo: 可以根据进程号输出并修改运行时的java 进程的opts。 jstat: 一个极强的监视VM内存工具。可以用来监视VM内存内的各种堆和非堆的大

乐之终曲 2285

jstat-1压缩包1111

jstat-1压缩包1111

jstat:JavaScript统计库

-JavaScript统计库 jStat提供统计功能的本地javascript实现。 完整详细信息可在。 与大多数库相比,jStat提供的功能更多,包括weibull,cauchy,泊松,超几何和beta分布。 对于大多数分布,jStat提供pdf,cdf,反函数,均值,众数,方差和样本函数,从而允许进行更复杂的计算。 注意:以前区分大小写的jStat模块将不再更新。 相反,在执行npm install或类似操作时,请使用全部小写的jstat 。 在浏览器中使用jStat jStat可以在浏览器中使用。 jStat对象将添加到窗口中。 例如: [removed][removed] <!-- include jStat, from the CDN or otherwise --> [removed] ... var jstat = th

JVM调优

jps:查看正在运行的 Java 进程。jps -v查看进程启动时的JVM参数;jstat:查看指定进程的 JVM 统计信息。jstat -gc查看堆各分区大小、YGC,FGC次数和时长。如果服务器没有 GUI 图形界面,只提供了纯文本控制台环境,它是运行期定位虚拟机性能问题的首选工具。jinfo:实时查看和修改指定进程的 JVM 配置参数。jinfo -flag查看和修改具体参数。jstack: 打印指定进程此刻的线程快照。定位线程长时间停顿的原因,例如死锁、等待资源、阻塞。

weixin_44250247的博客 1953

jmap jstat等命令介绍

jmap jstat等命令介绍,如何监控tomcat内存使用情况的资料

jvm调优到底是要干什么

面试总问的jvm调优到底是要干什么 请注意,jvm调优,调的是稳定,并不能带给你性能的大幅提升。服务稳定的重要性就不用多说了,保证服务的稳定,gc永远会是Java程序员需要考虑的不稳定因素之一。复杂和高并发下的服务,必须保证每次gc不会出现性能下降,各种性能指标不会出现波动,gc回收规律而且干净,找到合适的jvm设置。详细了解jvm的话请看神书《深入理解java虚拟机》。说些题外话...

lelemom的博客 2万+

jstatcom-开源

JStatCom是一个软件框架,可促进创建JAVA程序来实现各个领域中基于数据的分析任务。 它提供了从专用软件包(例如Matlab,Gauss,Ox等)中调用例程的方法。

JVM内存—jstat分析

jstat用户监控基于HotSpot的JVM,对其堆的使用情况进行实时的命令行统计

JVM调优三板斧,快速掌握调优的核心与思路

如何从调优小白走向调优高手 说起JVM调优,大伙儿可能瞬间头皮发麻。"好家伙,和调优沾边儿的事儿,不是我这个段位的小新手能解决的"。 于是赶紧找来了技术大拿,看大拿三下五除二排查出了问题原因,给出了优化方案。此时,我们的眼里放着光,一脸崇拜的望着大拿,幻想着哪天能成为他这样出色的大佬。 这篇文章,就是让你学会调优,掌握一个属于自己的调优节奏与思路。 快速了解调优 如果你对调优没有什么概念,那么我们先说说调优是什么。 所谓调优,就是你的系统生病了。此时,我们就是一个诊所。系统找我们来治治病。 我

weixin_47184173的博客 5269

jstat-statistics-toolkit:IPM软件包-用于统计分析的jStat库

jstat-statistics-toolkit 概述 大数据要求很高,因此,各种强大的统计工具必不可少。 这是一个JS库,您可以在代码服务中使用它来针对多维数据集进行计算,构建统计模型,检测异常等。 这是一个ipm软件包,其中包含ipm社区中的一个或多个可重用资产。 此仓库中的“ package.json”是ipm规范的package.json( ,它是npm的package.json规范()的超集。 设置 用户只需要在代码服务中导入库并使用jStat对象访问它jStat 。 用法 有很多示例可以直接使用。 示例服务仅显示其中的一部分。 资产 代码库 JStatLib-核心库,可作为jStat对象访问 代码服务 例子 JStatExampleGenerateData -生成100个数据点,专卖店在vibration_sensor_1收藏 JStatExampleNormalDevia

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

手把手用LTspice仿真运算放大器电路:从虚短虚断到频响分析

本文通过LTspice仿真软件,手把手教你从搭建基础运算放大器电路开始,验证虚短虚断原理,并逐步深入频响分析与稳定性探究。内容涵盖反相/同相放大器、积分器仿真,导入真实运放模型进行蒙特卡洛分析,以及利用交流分析和波特图评估电路性能,帮助工程师和学生将抽象理论转化为直观、可测量的仿真结果,提升电路设计实战能力。

salt9的博客 1094

pytorch实现手语识别

连续手语识别项目,中文数据集CSL

masteryi-0018的博客 1万+

JVM调优工具详解及调优实战

本文详细介绍了Java性能优化中JVM调优的关键工具与实战案例。主要内容包括: JVM调优工具详解:jmap(内存分析)、jstack(线程诊断)、jinfo(参数查看)、jstat(GC统计)的使用方法和命令示例 三大实战优化案例:频繁Full GC优化、内存泄漏处理、电商系统参数调整,展示了从问题定位到解决方案的全过程 最佳实践指南:提出"减少对象进入老年代"等核心原则,并给出完整的监控-分析-调整-验证四步优化流程,同时总结了常见问题的诊断与解决方法。 通过系统化的工具使用和案例分

慢慢 1275

Codesys电子凸轮功能块MC_CamIn的masteroffset和slaveoffset参数的使用

问题1:在Codesys使用作轴电子凸轮时,MC_CamTableSelect的参数设置为MasterAbsolute=1,SlaveAbsolute=1,此设置为绝得模式, 此时主从轴当前位置都不为零时,此时Masteroffset=0、slaveOffset=0,凸轮启时出现突变,实轴无法启动。问题分析:在觉得模式下,主轴位置和从轴为是对应凸轮表的相位的,Masteroffset=0、slaveOffset=0,启动点时在主轴位置=0,从轴位置=0的点启动,此时主轴当前位置不为零则主从轴位置发生突变,

weixin_43587371的博客 1801

JVM调优总结

以下为我的JMeter线程组配置以下为我项目未优化时的压测结果以下为JVM可视化状态图以下为我项目的。

2301_81016208的博客 4956

Office如何通过VSTO进行WORD插件开发?

VSTO(Visual Studio Tools for Office )是VBA的替代,是一套用于创建自定义Office应用程序的Visual Studio工具包。VSTO可以用Visual Basic 或者Visual C#扩展Office应用程序(例如Word、Excel、PPT)。本文通过VSTO进行Word插件开发总结,并进行记录。

【cacrle】的博客 7319

从零到一:基于Docker与OSM数据构建Valhalla路径规划服务及Mapbox风格可视化

本文详细介绍了如何从零开始,基于Docker容器技术快速部署开源的Valhalla路径规划服务。通过获取免费的OSM地图数据并构建路网,最终实现服务调用与Mapbox风格的地图可视化,为出行应用原型开发或本地化路径规划服务提供了一套完整、高效的实践方案。

weixin_29297127的博客 166
上一篇: JVM调优小工具之jps
下一篇: 如何解决Linux环境下使用jinfo命令和jmap命令时出现的异常
小菜大白
博客等级 码龄10年 4粉丝 12原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值