[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:新生代最小值: ...
随机推荐
- 面试官:小伙子,你给我讲一下java类加载机制和内存模型吧
类加载机制 虚拟机把描述类的数据从 Class文件加载到内存,并对数据进行校验.转换解析和初始化,最终形成可以被虚拟机直接使用的java类型,这就是虚拟机的类加载机制. 类的生命周期 加载(Loadi ...
- CorelDRAW:油漆滚轮及LOGO设计
小马坐在电脑前,看着自己画的油漆滚轮Logo,既生气又无奈.为了这个油漆Logo,小马用了四.五个不同的设计软件,也画了不下10个图案,就没有一个满意的."明天就要交稿了,现在都11点多了, ...
- Java(8)I/O
目录 一.File类 1.File类概述 2.File类实例化 3.File类常用方法 二.IO流的原理 1.IO流的原理 2.input和output的理解 三.IO流的分类 1.分类 2.图示 3 ...
- Ubuntu16.04配置静态ip
1.安装好ubuntu16.04虚拟机之后,首先按照下图的步骤进行: 首先需要打开虚拟网络编辑器,点击VMnet8的虚拟网卡,如果没有这个网卡,只需在编辑虚拟机设置里面将网络适配器类型改为NAT模式, ...
- web服务器是啥
什么是web服务器 参考 https://www.cnblogs.com/zhaoyl/archive/2012/10/10/2718575.html 了解nginx之前,先了解下什么是web服务器吧 ...
- LeetCode周赛#209
1609. 奇偶树 #广搜 #二叉树的层次遍历 题目链接 题意 如果一棵二叉树满足下述几个条件,则可以称为奇偶树 : 二叉树根节点所在层下标为 0 ,根的子节点所在层下标为 1 ,根的孙节点所在层下标 ...
- 关于你天天见到的JDK、JRE和JVM
什么是JDK.JRE.JVM? 大家都知道电脑的操作系统是由汇编和C语言写出,因此操作系统无法直接识别其他语言.这时我们就需要为我们写的Java程序配备一名翻译官 ----- 编译环境,将Java程序 ...
- Bootstrap Blazor 组件介绍 Table (二)自定义模板列功能介绍
Bootstrap Blazor 是一套企业级 UI 组件库,适配移动端支持各种主流浏览器,已经在多个交付项目中使用.通过本套组件可以大大缩短开发周期,节约开发成本.目前已经开发.封装了 70 多个组 ...
- PyQt(Python+Qt)学习随笔:QToolBox工具箱currentItem对应的index、text、name、icon、ToolTip属性
老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 在Designer中,toolBox主要有如下属性: 可以看到,toolBox的属性主要是与当前项相 ...
- 转:浅析windows下字符集和文件编码存储/utf8/gbk
最近老猿在学习文件操作及网络爬虫相关知识,发现字符集及编码的处理非常重要,而老猿原来对此了解并不多,因此找了几篇文章看了一下,将老猿认为比较的相关文章转载一下.感谢各位原创大神! 1,字符集 这里主要 ...