[JVM工具(1)] 堆栈检查利器jstat的使用
jstat
- 可以检查
JVM
整体的运行情况,可以看到 新生代,老年代等的内存使用情况,以及GC
次数和耗时 - 命令格式 如
jstat -<option> [-t] [-h<lines>] <vmid> [<interval> [<count>]]
- 其中
-option
必选参数表示命令参数 如gc
等,-t
为可选参数表示是否打印时间(秒),-h<lines>
可选参数,表示每隔多少行打印头部列表,如设置-h 5
, 那么每五条记录就会重新打印表头,vmid
必选参数,Java
进程id
,interval
可选参数表示采样的时间间隔,count
可选参数表示需要采样多少条,
jstat -gc pid
jstat -gc pid
这是最常用的语法,可以直接查看内存和垃圾回收情况- 首先我们要获得
Java
进程的PID
信息,可以通过jps
命令来获取 - 之后执行
jstat -gc pid
即可看到对应Java
进程的内存情况,如下:
这里说明一下关于这些列名的含义:
S0C
: 新生代中第一个Survivor
(即From
区)的容量大小 (千字节)S1C
: 新生代中第二个Survivor
(即To
区)的容量大小 (千字节)S0U
: 新生代From Survivor
区已使用内存大小(千字节)S1U
: 新生代To Survivor
区一使用内存大小(千字节)EC
: 新生代Eden
区的容量大小(千字节)EU
: 新生代Eden
区已使用内存大小(千字节)OC
: 老年代空间容量大小(千字节)OU
: 老年代已使用内存大小(千字节)MC
: 方法区的空间大小 (千字节)MU
: 方法区已使用的空间大小(千字节)YGC
: 从系统启动到现在Young GC/Minor GC
的次数YGCT
:Young GC
总耗时(秒)FGC
:从系统启动到现在Full GC
的次数FGCT
:Full GC
的总耗时(秒)GCT
: 垃圾回收总的耗时(秒)NGCMN
:年轻代(young
)中初始化(最小)的大小 (千字节)NGCMX
:年轻代(young
)的最大容量 (千字节)GC
:年轻代(young
)中当前的容量 (千字节)OGCMN
:old
代中初始化(最小)的大小 (千字节)OGCMX
:old
代的最大容量 (千字节)OGC
:old
代当前新生成的容量 (千字节)PGCMN
:perm
代中初始化(最小)的大小 (千字节)PGCMX
:perm
代的最大容量 (千字节)PGC
:perm
代当前新生成的容量 (千字节)S0
:年轻代中From survivor
(幸存区)已使用的占当前容量百分比S1
:年轻代中To Survivor
(幸存区)已使用的占当前容量百分比E
:年轻代中Eden
(伊甸园)已使用的占当前容量百分比O
:old
代已使用的占当前容量百分比P
:perm
代已使用的占当前容量百分比S0CMX
:年轻代中From survivor
(幸存区)的最大容量 (千字节)S1CMX
:年轻代中To Survivor
(幸存区)的最大容量 (千字节)ECMX
:年轻代中Eden
(伊甸园)的最大容量 (千字节)DSS
:当前需要survivor
(幸存区)的容量 (千字节)(Eden
区已满)TT
: 持有次数限制MTT
: 最大持有次数限制
jstat -gcutil PID
- 一般我们还可以通过
jstat -gcutil pid
来获取分代年龄的使用情况,显示为占比,如下,表头参考上面
jstat -gccapacity PID
-gccapacity
命令主要用来分析堆内存,用法参考上面,如下效果,表头含义参看上面
其他一些命令参数
jstat -gcnew PID
: 年轻代GC
分析,其中TT
和MTT
可以看到对象在年龄代存活的年龄和存活的最大年龄
jstat -gcnewcapacity PID
: 年轻代内存分析
jstat -gcold PID
: 老年代GC
分析
jstat -gcoldcapacity
: 老年代内存分析
jstat -gcmetacapacity PID
: 元数据内存分析
jstat -class PID
- 统计进程中加载的类的数量,如下:
- 说明:
Loaded:加载class的数量
Bytes:所占用空间大小
Unloaded:未加载数量
Bytes:未加载占用空间
Time:时间
jstat -compiler PID
- 编译信息的统计命令, 如下命令
jstat -class 15372
- 说明:
Compiled:编译数量。
Failed:失败数量
Invalid:不可用数量
Time:时间
FailedType:失败类型
FailedMethod:失败的方法
jstat -printcompilation PID
JVM
编译方法的统计,如下命令jstat -printcompilation 15372
- 说明:
Compiled:最近编译方法的数量
Size:最近编译方法的字节码数量
Type:最近编译方法的编译类型。
Method:方法名标识。
好了今天就说到这里,
jstat
死一个非常还用的工具,需要平时多使用多分析才能真真掌握,下次我们接着说相关的工具的使用~[JVM工具(1)] 堆栈检查利器jstat的使用的更多相关文章
- Linux ---> 监控JVM工具
Linux ---> 监控JVM工具shkingshking 发布时间: 2013/10/10 01:27 阅读: 2642 收藏: 26 点赞: 1 评论: 0 JDK内置工具使用 jps(J ...
- jvm工具
jvm工具 知识,经验是基础,数据是依据,工具是运营知识处理数据的手段 数据:运行日志.异常堆栈.GC日志.线程快照.堆转存储快照 JPS:虚拟机进程状况工具 jvm process status t ...
- 内存问题检查利器——Purify
内存问题检查利器——Purify 一. 引言 我们都知道软件的测试(在以产品为主的软件公司中叫做QA—Quality Assessment)占了整个软件工程的30% -50%,但有 ...
- 【原创】大叔经验分享(71)docker容器中使用jvm工具
java应用中经常需要用到jvm工具来进行一些操作,如果java应用部署在docker容器中,如何使用jvm工具? 首先要看使用的docker镜像, 比如常用的openjdk镜像分为jdk和jre,只 ...
- 使用TCMalloc的堆栈检查
在前一篇译文<TCMalloc:线程缓冲的Malloc>详细讲解了TCMalloc的工作原理和特点,今天翻译<heap-checking using tcmalloc>,了解T ...
- JVM基础系列第11讲:JVM参数之堆栈空间配置
JVM 中最重要的一部分就是堆空间了,基本上大多数的线上 JVM 问题都是因为堆空间造成的 OutOfMemoryError.因此掌握 JVM 关于堆空间的参数配置对于排查线上问题非常重要. tips ...
- 通用且常用的Java正则匹配工具,用以检查邮箱名、电话号码、用户密码、邮政编码等合法性
一个通用且常用的Java正则匹配工具,用以检查邮箱名.电话号码.用户密码.邮政编码等合法性. import java.util.regex.Matcher; import java.util.rege ...
- JVM工具jstat使用说明
输入:jstat -help得到以下帮助信息 Usage: jstat --help|-options jstat -<option> [-t] [-h<lines>] < ...
- jvm工具及命令大全
虚拟机栈 栈桢大小缺省为1M,可用参数 –Xss调整大小,例如-Xss256k 堆 -Xms:堆的最小值: -Xmx:堆的最大值: -Xmn:新生代的大小: -XX:NewSize:新生代最小值: ...
随机推荐
- CorelDRAW快速制作闪耀钻石项链效果
今天小编为大家分享使用CorelDRAW快速制作闪耀钻石项链效果,过程并不是很复杂,主要用到刻刀工具.智能填充和渐变色的应用,待到一个角完成之后会走一点点捷径,利用旋转复制的方法做出完整的钻石效果,最 ...
- SFTP 连接服务器下载文件方法采坑说明
本篇博客主要记录请求SFTP服务器的一些方法采坑情况. 采坑的方法说明: 1. cd():这个方法用于进入某个目录下. 默认情况,当连接SFTP服务器成功后直接进入用户目录,比如我连接自己本机SFTP ...
- 经历与感想丨第15届CSUST-ACM程序大赛
这算是我的第一次较正式的\(ACM\)团队比赛吧,真的感谢@dj.@qc两位大佬. 开局就选了最后一题(因为哈希是他们集训队的猫),但三人无啥思路,于是溜回A题(发现有不少人已经过了).dj很快进入状 ...
- Java基础教程——线程状态
线程状态 JAVA定义了6种线程状态: Thread.State public enum State { NEW, RUNNABLE, BLOCKED, WAITING, TIMED_WAITING, ...
- java数组作为函数返回值
1 //将一个二维数组行和列元素互换.存到另一个二维数组 2 package test; 3 4 public class test1_8 { 5 public static int[][] huhu ...
- Django----Modelviewset继承
1.modelviewset 认证.权限.限流.序列化.分页.过滤.排序 modelviewset的应用场景是: 1.主要应用于数据接口 2.对数据库的增删改查 3.在视图函数中没有很多业务逻辑需要来 ...
- K 均值算法-如何让数据自动分组
公号:码农充电站pro 主页:https://codeshellme.github.io 之前介绍到的一些机器学习算法都是监督学习算法.所谓监督学习,就是既有特征数据,又有目标数据. 而本篇文章要介绍 ...
- Abp(net core)+easyui+efcore实现仓储管理系统——出库管理之七(五十六)
abp(net core)+easyui+efcore实现仓储管理系统目录 abp(net core)+easyui+efcore实现仓储管理系统--ABP总体介绍(一) abp(net core)+ ...
- Zabbix监控使用进阶
1. Zabbix基于SNMP监控 1.1 zabbix-web所能指定的监控方式 ssh/telnet agent:master/agent SNMP:Simple Network Manageme ...
- PyQt(Python+Qt)学习随笔:QToolBox工具箱currentItem对应的index、text、name、icon、ToolTip属性
老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 在Designer中,toolBox主要有如下属性: 可以看到,toolBox的属性主要是与当前项相 ...