jstat -gcutil 输出结果分析_助你了解jvm命令,查找JVM堆栈信息,分析性能问题。下面介绍一下jstat命令:

jstat:虚拟机统计信息监视工具(JVM Statistics Monitoring Tool)

说明:监视虚拟机的各种运行状态:类装载、内存、垃圾收集等运行数据。只用于Java进程或Java应用

语法jstat [option] PID [interval] [count]

pid查找办法:可以使用ps -aux | grep java 或者jps –v 命令找到java 进程 pid 

参数分析:

option:

-class 查看类装载的信息

-gc 查看java堆的状况

-gccapacity 查看堆中各个区域的最小容量和最大容量

-gcutil 查看堆中各个区域已使用空间占其总空间的百分比

-gccause 与-gcutil相同,另外还输出了:导致上一次GC的原因和当前GC的原因

-gcnew 查看堆中新生代的状况

-gcnewcapacity 查看堆中新生代的最小容量和最大容量

-gcold 查看堆中老年代的状况

-gcoldcapacity 查看堆中老年代的最小容量和最大容量

-gcpermcapacity 查看堆中永久代的最小容量和最大容量

-gcmetacapacity 查看元数据空间的当前大小、最大容量和最小容量(jdk1.8)

interval:表示查询的间隔时间,单位:毫秒

count: 表示查询的次数,如果interval和count都省略,则默认为只查询一次。

举例

jstat -gcutil 2000 10 #每2秒打印一次,采样10次

各指标的含义:

S0 — Heap上的 Survivor space 0 区已使用空间的百分比

S1 — Heap上的 Survivor space 1 区已使用空间的百分比

E — Heap上的 Eden space 区已使用空间的百分比

O — Heap上的 Old space 区已使用空间的百分比

P — Perm space 区已使用空间的百分比

YGC — 从应用程序启动到采样时发生 Young GC 的次数

YGCT– 单位为秒,从应用程序启动到采样时 Young GC 所用的时间

FGC — 从应用程序启动到采样时发生 Full GC 的次数

FGCT– 单位为秒,从应用程序启动到采样时 Full GC 所用的时间

GCT — 单位为秒,从应用程序启动到采样时用于垃圾回收的总时间

新生代(Young)中的Eden区:E

E: Eden区已使用的空间占其总空间的百分比

EC:Eden区的容量(Eden Capacity)

EU:Eden区已使用的空间(Eden Use)

新生代(Young)中的Survivor区:S0 S1

老年代(Old):O

永久代(Permanent):P

jdk8中:

元数据空间(Metaspace):M

元数据空间中的压缩类空间(Compressed Class Space):CCS

说明:

1>jdk8中已经没有永久代了,取而代之的是元空间,元空间占用的是本地内存,不占用虚拟机的内存。

2>Metaspace由Klass Metaspace和NoKlass Metaspace两部分组成。

3>M表示Metaspace已使用的百分比,CCS表示Klass Metaspace已使用的百分比(CCS=CCSU/CCSC)。

4>M的值达到了90%以上,不一定能说明metaspace已经用了很多了,因为内存是慢慢commit的,所以我们的分母是慢慢变大的,不过当我们commit到一定量的时候就不会再增长了。

5>根据MC,MU,CCSC,CCSU来判断metaspace的状态更靠谱。(注:可以在jstat -gc 中看到MU)

注:S0/S0C/S0U、S1/S1C/S1U、O/OC/OU、P/PC/PU、M/MC/MU、CCS/CCSC/CCSU 与 E/EC/EU类似

LGCC:最后一次GC发生的原因

GCC: 当前GC发生的原因

gccause示例:

jstat -gccause 1 2000 10

jstat -gccapacity

NGCMN:新生代的最小(初始化)容量

NGCMX:新生代的最大容量

NGC: 新生代当前的容量

ECMX: 新生代中Eden区的最大容量

S0CMX、S1CMX:新生代中Survivor区的最大容量

OGCMN:老年代的最小(初始化)容量

OGCMX:老年代的最大容量

OGC: 老年代当前的容量

PGCMN:永久代的最小(初始化)容量

PGCMX:永久代的最大容量

PGC: 永久代当前的容量

jdk8中:

MCMN: 元数据空间最小容量

MCMX: 元数据空间最大容量

MC: 当前元数据空间的大小

CCSMN: 压缩类空间CCS(即:Klass Metaspace)的最小容量

CCSMX: 压缩类空间CCS(即:Klass Metaspace)的最大容量

CCSC: 当前压缩类空间CCS(即:Klass Metaspace)的大小

jstat -gcnew

TT: 老年化阈值。被移动到老年代之前,在新生代空存活的次数

MTT:最大老年化阈值。

DSS:幸存者区所需空间大小

注意:单位是都是KB

Reference

JVM 使用jstat分析系统的垃圾回收情况的更多相关文章

  1. JVM调优总结 + jstat 分析(转)

    [转] JVM调优总结 + jstat 分析 JVM调优总结 + jstat 分析 jstat -gccause pid 1 每格1毫秒输出结果jstat -gccause pid 2000 每格2秒 ...

  2. JVM内存问题分析

    JVM运行时数据区: 1.方法区:类信息(类名,访问修饰符.字段描述.方法 描述等).常量.静态变量.即时编译后的class文件等.在GC时用永久代来实现方法区 2.运行时常量池:是方法区的一部分,存 ...

  3. 【转】JVM虚拟性能分析

    JDK自带的JAVA性能分析工具.它已经在你的JDK bin目录里了,只要你使用的是JDK1.6 Update7之后的版本.点击一下jvisualvm.exe图标它就可以运行了. 这里是VisualV ...

  4. JVM总结(二):垃圾回收器

    这一节我们来总结一下JVM垃圾收集器方面的东西. 垃圾回收器 判断对象引用是否失效 对象生存判断算法 引用判断过程 垃圾收集算法简介 垃圾收集器 新生代垃圾收集器 老年代垃圾收集器 新生代和老年代垃圾 ...

  5. Java虚拟机性能管理神器 - VisualVM(1) 简介 - JVM轻量级监控分析神器

    目录(?)[-] 一VisualVM是什么 二如何获取VisualVM 三获取那个版本 四VisualVM能做什么 显示JAVA应用程序配置和运行时环境 显示本地和远程JAVA应用程序运行状态 监控应 ...

  6. JVM源码分析之Metaspace解密

        概述 metaspace,顾名思义,元数据空间,专门用来存元数据的,它是jdk8里特有的数据结构用来替代perm,这块空间很有自己的特点,前段时间公司这块的问题太多了,主要是因为升级了中间件所 ...

  7. JVM性能优化, Part 3 垃圾回收

    ImportNew注:本文是JVM性能优化 系列-第3篇-<JVM性能优化, Part 3 —— 垃圾回收> 第一篇 <JVM性能优化, Part 1 ―― JVM简介 > 第 ...

  8. jvm 调优(2)垃圾回收算法

    可以从不同的的角度去划分垃圾回收算法: 按照基本回收策略分 引用计数(Reference Counting): 比较古老的回收算法.原理是此对象有一个引用,即增加一个计数,删除一个引用则减少一个计数. ...

  9. (转载)JVM中的内存模型与垃圾回收

    转载自微信公众号:Java高级架构(Java-jiagou)-----看完这篇文章,我奶奶都知道JVM中的内存模型与垃圾回收了! 六.内存模型 6.1  内存模型与运行时数据区 Java虚拟机在执行J ...

  10. 学习一下 JVM (三) -- 了解一下 垃圾回收

    一.简单了解几个概念 1.什么是垃圾(Garbage)?什么是垃圾回收(Garbage Collection,简称 GC)? (1)什么是垃圾(Garbage)? 这里的垃圾 指的是 在程序运行过程中 ...

随机推荐

  1. Appflowy cloud 部署测试避坑指南

    在进行 Appflowy cloud 部署测试时,我可谓是踩坑无数.下面,我想从几个关键方面来分享一下我的经验. 先给大家讲讲我的基础情况.Appflowy cloud 的部署是在 docker 环境 ...

  2. laravel The Process class relies on proc_open, which is not available on your PHP installation.

    解决办法: 在php.ini中,找到disable_functions选项,看看后面是否有proc_open函数被禁用了,去掉proc_get_status,proc_open即可

  3. CAS和OAuth2.0区别

    CAS和OAuth2.0区别 CAS (Central Authentication Service) 和 OAuth 2.0 都是身份验证和授权技术,但它们在工作原理和适用场景上有明显的差异. CA ...

  4. Tomcat之Jconsole监控

    JConsole的图形用户界面是一个符合Java管理扩展(JMX)规范的监测工具,JConsole使用Java虚拟机(Java VM),提供在Java平台上运行的应用程序的性能和资源消耗的信息.在Ja ...

  5. NextJS CVE-2025-29927 安全漏洞

    NextJS CVE-2025-29927 安全漏洞 CVE-2025-29927 是一个存在于 Next.js 框架中的关键安全漏洞.该漏洞允许攻击者通过伪造或篡改 x-middleware-sub ...

  6. [每日算法 - 华为机试] 剑指 Offer 10- II. 青蛙跳台阶问题

    入口 力扣https://leetcode.cn/problems/qing-wa-tiao-tai-jie-wen-ti-lcof/ 题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶.求该 ...

  7. Lambda表达式--java进阶day03

    1.Lambda表达式 2.Lambda表达式格式 ()放我们要重写的方法的形参,{}放我们要写的逻辑 show()没有形参,所以空着,我们将打印语句写入{}中 如图,匿名内部类和Lambda都出现了 ...

  8. 【Java】String字符串格式化

    一.前言 String.format() 作为文本处理工具,为我们提供强大而丰富的字符串格式化功能,为了不止步于简单调用 String.format("Hello %s", &qu ...

  9. 推荐Linux命令行运维工具: Wowkey--实现自动化批量化标准化

    WowKey命令行运维工具,Linux设备的自动化.批量化.标准化的运维解决方案,解放运维人,提升企业运维效率和质量. 有人能理解做设备的运营维护工作的痛苦所在吗? 如果你的运维工作中,只维护个位数数 ...

  10. JMeter递增加压总结

    1.安装插件 a.下载JMeterPlugins-Standard.jar文件 下载链接:https://jmeter-plugins.org/downloads/old/ 下载完成后解压,将JMet ...