jstat

  • 可以检查 JVM 整体的运行情况,可以看到 新生代,老年代等的内存使用情况,以及GC 次数和耗时
  • 命令格式 如 jstat -<option> [-t] [-h<lines>] <vmid> [<interval> [<count>]]
  • 其中 -option 必选参数表示命令参数 如 gc 等, -t 为可选参数表示是否打印时间(秒),-h<lines> 可选参数,表示每隔多少行打印头部列表,如设置 -h 5 , 那么每五条记录就会重新打印表头,vmid 必选参数,Java 进程idinterval 可选参数表示采样的时间间隔,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 )中当前的容量 (千字节)
    • OGCMNold 代中初始化(最小)的大小 (千字节)
    • OGCMXold 代的最大容量 (千字节)
    • OGCold 代当前新生成的容量 (千字节)
    • PGCMNperm 代中初始化(最小)的大小 (千字节)
    • PGCMXperm 代的最大容量 (千字节)
    • PGCperm 代当前新生成的容量 (千字节)
    • S0 :年轻代中 From survivor (幸存区)已使用的占当前容量百分比
    • S1 :年轻代中 To Survivor (幸存区)已使用的占当前容量百分比
    • E :年轻代中 Eden (伊甸园)已使用的占当前容量百分比
    • Oold 代已使用的占当前容量百分比
    • Pperm 代已使用的占当前容量百分比
    • 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 分析,其中 TTMTT 可以看到对象在年龄代存活的年龄和存活的最大年龄

  • 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的使用的更多相关文章

  1. Linux ---> 监控JVM工具

    Linux ---> 监控JVM工具shkingshking 发布时间: 2013/10/10 01:27 阅读: 2642 收藏: 26 点赞: 1 评论: 0 JDK内置工具使用 jps(J ...

  2. jvm工具

    jvm工具 知识,经验是基础,数据是依据,工具是运营知识处理数据的手段 数据:运行日志.异常堆栈.GC日志.线程快照.堆转存储快照 JPS:虚拟机进程状况工具 jvm process status t ...

  3. 内存问题检查利器——Purify

    内存问题检查利器——Purify 一.           引言 我们都知道软件的测试(在以产品为主的软件公司中叫做QA—Quality Assessment)占了整个软件工程的30% -50%,但有 ...

  4. 【原创】大叔经验分享(71)docker容器中使用jvm工具

    java应用中经常需要用到jvm工具来进行一些操作,如果java应用部署在docker容器中,如何使用jvm工具? 首先要看使用的docker镜像, 比如常用的openjdk镜像分为jdk和jre,只 ...

  5. 使用TCMalloc的堆栈检查

    在前一篇译文<TCMalloc:线程缓冲的Malloc>详细讲解了TCMalloc的工作原理和特点,今天翻译<heap-checking using tcmalloc>,了解T ...

  6. JVM基础系列第11讲:JVM参数之堆栈空间配置

    JVM 中最重要的一部分就是堆空间了,基本上大多数的线上 JVM 问题都是因为堆空间造成的 OutOfMemoryError.因此掌握 JVM 关于堆空间的参数配置对于排查线上问题非常重要. tips ...

  7. 通用且常用的Java正则匹配工具,用以检查邮箱名、电话号码、用户密码、邮政编码等合法性

    一个通用且常用的Java正则匹配工具,用以检查邮箱名.电话号码.用户密码.邮政编码等合法性. import java.util.regex.Matcher; import java.util.rege ...

  8. JVM工具jstat使用说明

    输入:jstat -help得到以下帮助信息 Usage: jstat --help|-options jstat -<option> [-t] [-h<lines>] < ...

  9. jvm工具及命令大全

      虚拟机栈 栈桢大小缺省为1M,可用参数 –Xss调整大小,例如-Xss256k 堆 -Xms:堆的最小值: -Xmx:堆的最大值: -Xmn:新生代的大小: -XX:NewSize:新生代最小值: ...

随机推荐

  1. 学习Validator验证框架总结

    在项目开发中许多地方需要加以验证,对于使用if-else简单粗暴一个一个验证,spring的validation封装了Javax ValidationI校验参数,大大缩减了代码量. 以前的分层验证,从 ...

  2. 使用Camtasia制作魔性抖肩舞视频

    最近一首风魔各大视频网站的魔性舞蹈又来袭了!这首充满魔性节奏的舞蹈就是抖肩舞了,为了将我热爱的抖肩舞视频分享给大家,我必须使用Camtasia教程录制(Windows系统)软件来制作一个魔性抖肩舞视频 ...

  3. FL Studio乐理教程之调式音阶

    在我们使用FL制作音乐时,乐理是必不可少的制作基础,本篇教程将结合FL Studio为大家讲解基础乐理及在FL Studio20中的使用技巧. 添加一个乐器,打开Piano Roll(钢琴窗). 首先 ...

  4. Python Api接口自动化测试框架 代码写用例

    公司新来两个妹子一直吐槽这个接口测试用例用excel维护起来十分费脑费事,而且比较low(内心十分赞同但是不能推翻自己),妹子说excel本来就很麻烦的工具,于是偷偷的进行了二次改版. 变更内容如下: ...

  5. 一看就懂的:MySQL数据页以及页分裂机制

    文章公号 首发!连载中~ 欢迎各位大佬关注, 回复:"抽奖" 还可参加抽活动 文末有二维码 一.知识回顾 回顾一下之前和大家分享的知识点 看了前面的文章,想必你肯定了解了什么是Bu ...

  6. Codeforces Round #677 (Div. 3) E、G题解

    E. Two Round Dances #圆排列 题目链接 题意 \(n\)(保证偶数)个人,要表演一个节目,这个节目包含两种圆形舞蹈,而每种圆形舞蹈恰好需要\(n/2\)个人,每个人只能跳一种圆形舞 ...

  7. JQuery案例:暖心小广告

    暖心小广告 写一个页面,每隔3秒显示小广告,再过3秒自动关闭. <head> <meta charset="UTF-8"> <title>暖心广 ...

  8. H3CNE认证(题库)

    H3CNE考试的题库,均为发烧友收集的,拥有将近认证考试的百分之八十五的题,但答案不具备官方性,但是题库具有解析. https://huxiaoyao.lanzous.com/b01tr2skd 密码 ...

  9. 记录一下超大list引起oom

    1.2g的堆内存 比较大的对象20w个,oom

  10. python:列表的去重:两种方法的问题是:结果是没有保持原来的顺序。

    列表的去重 1.使用set的特型,python的set和其他语言类似, 是一个无序不重复元素集 orgList = [1,0,3,7,7,5] #list()方法是把字符串str或元组转成数组 for ...