JVM 使用jstat分析系统的垃圾回收情况
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分析系统的垃圾回收情况的更多相关文章
- JVM调优总结 + jstat 分析(转)
[转] JVM调优总结 + jstat 分析 JVM调优总结 + jstat 分析 jstat -gccause pid 1 每格1毫秒输出结果jstat -gccause pid 2000 每格2秒 ...
- JVM内存问题分析
JVM运行时数据区: 1.方法区:类信息(类名,访问修饰符.字段描述.方法 描述等).常量.静态变量.即时编译后的class文件等.在GC时用永久代来实现方法区 2.运行时常量池:是方法区的一部分,存 ...
- 【转】JVM虚拟性能分析
JDK自带的JAVA性能分析工具.它已经在你的JDK bin目录里了,只要你使用的是JDK1.6 Update7之后的版本.点击一下jvisualvm.exe图标它就可以运行了. 这里是VisualV ...
- JVM总结(二):垃圾回收器
这一节我们来总结一下JVM垃圾收集器方面的东西. 垃圾回收器 判断对象引用是否失效 对象生存判断算法 引用判断过程 垃圾收集算法简介 垃圾收集器 新生代垃圾收集器 老年代垃圾收集器 新生代和老年代垃圾 ...
- Java虚拟机性能管理神器 - VisualVM(1) 简介 - JVM轻量级监控分析神器
目录(?)[-] 一VisualVM是什么 二如何获取VisualVM 三获取那个版本 四VisualVM能做什么 显示JAVA应用程序配置和运行时环境 显示本地和远程JAVA应用程序运行状态 监控应 ...
- JVM源码分析之Metaspace解密
概述 metaspace,顾名思义,元数据空间,专门用来存元数据的,它是jdk8里特有的数据结构用来替代perm,这块空间很有自己的特点,前段时间公司这块的问题太多了,主要是因为升级了中间件所 ...
- JVM性能优化, Part 3 垃圾回收
ImportNew注:本文是JVM性能优化 系列-第3篇-<JVM性能优化, Part 3 —— 垃圾回收> 第一篇 <JVM性能优化, Part 1 ―― JVM简介 > 第 ...
- jvm 调优(2)垃圾回收算法
可以从不同的的角度去划分垃圾回收算法: 按照基本回收策略分 引用计数(Reference Counting): 比较古老的回收算法.原理是此对象有一个引用,即增加一个计数,删除一个引用则减少一个计数. ...
- (转载)JVM中的内存模型与垃圾回收
转载自微信公众号:Java高级架构(Java-jiagou)-----看完这篇文章,我奶奶都知道JVM中的内存模型与垃圾回收了! 六.内存模型 6.1 内存模型与运行时数据区 Java虚拟机在执行J ...
- 学习一下 JVM (三) -- 了解一下 垃圾回收
一.简单了解几个概念 1.什么是垃圾(Garbage)?什么是垃圾回收(Garbage Collection,简称 GC)? (1)什么是垃圾(Garbage)? 这里的垃圾 指的是 在程序运行过程中 ...
随机推荐
- Appflowy cloud 部署测试避坑指南
在进行 Appflowy cloud 部署测试时,我可谓是踩坑无数.下面,我想从几个关键方面来分享一下我的经验. 先给大家讲讲我的基础情况.Appflowy cloud 的部署是在 docker 环境 ...
- 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即可
- CAS和OAuth2.0区别
CAS和OAuth2.0区别 CAS (Central Authentication Service) 和 OAuth 2.0 都是身份验证和授权技术,但它们在工作原理和适用场景上有明显的差异. CA ...
- Tomcat之Jconsole监控
JConsole的图形用户界面是一个符合Java管理扩展(JMX)规范的监测工具,JConsole使用Java虚拟机(Java VM),提供在Java平台上运行的应用程序的性能和资源消耗的信息.在Ja ...
- NextJS CVE-2025-29927 安全漏洞
NextJS CVE-2025-29927 安全漏洞 CVE-2025-29927 是一个存在于 Next.js 框架中的关键安全漏洞.该漏洞允许攻击者通过伪造或篡改 x-middleware-sub ...
- [每日算法 - 华为机试] 剑指 Offer 10- II. 青蛙跳台阶问题
入口 力扣https://leetcode.cn/problems/qing-wa-tiao-tai-jie-wen-ti-lcof/ 题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶.求该 ...
- Lambda表达式--java进阶day03
1.Lambda表达式 2.Lambda表达式格式 ()放我们要重写的方法的形参,{}放我们要写的逻辑 show()没有形参,所以空着,我们将打印语句写入{}中 如图,匿名内部类和Lambda都出现了 ...
- 【Java】String字符串格式化
一.前言 String.format() 作为文本处理工具,为我们提供强大而丰富的字符串格式化功能,为了不止步于简单调用 String.format("Hello %s", &qu ...
- 推荐Linux命令行运维工具: Wowkey--实现自动化批量化标准化
WowKey命令行运维工具,Linux设备的自动化.批量化.标准化的运维解决方案,解放运维人,提升企业运维效率和质量. 有人能理解做设备的运营维护工作的痛苦所在吗? 如果你的运维工作中,只维护个位数数 ...
- JMeter递增加压总结
1.安装插件 a.下载JMeterPlugins-Standard.jar文件 下载链接:https://jmeter-plugins.org/downloads/old/ 下载完成后解压,将JMet ...