首页 > 系统相关 >【性能测试】JVM自带内存分析工具详解

【性能测试】JVM自带内存分析工具详解

时间:2023-09-02 23:33:30浏览次数:47  
标签:Survivor 回收 次数 详解 内存 JVM 大小 年代 垃圾

一、Jstat使用(重点)

Jstat命令是jvm调优非常重要,且非常有效的命令。具体用法如下:

1. 垃圾回收统计 jstat -gc

jstat -gc 进程id
这个命令非常常用,在线上有问题的时候,可以通过这个命令来分析问题。

下面我们来测试一下,启动一个项目,然后在终端驶入jstat -gc 进程id,得到如下结果

上面的参数分别是什么意思呢?先识别参数的含义,然后根据参数进行分析

S0C: 第一个Survivor区的容量
S1C: 第二个Survivor区的容量
S0U: 第一个Survivor区已经使用的容量
S1U:第二个Survivor区已经使用的容量
EC: 新生代Eden区的容量
EU: 新生代Eden区已经使用的容量
OC: 老年代容量
OU:老年代已经使用的容量
MC: 方法区大小(元空间)
MU: 方法区已经使用的大小
CCSC:压缩指针占用空间
CCSU:压缩指针已经使用的空间
YGC: YoungGC已经发生的次数
YGCT: 这一次YoungGC耗时
FGC: Full GC发生的次数
FGCT: Full GC耗时
GCT: 总的GC耗时,等于YGCT+FGCT
连续观察GC变化的命令

jstat -gc 进程ID 间隔时间 打印次数
举个例子:我要打印10次gc信息,每次间隔1秒

jstat -gc 进程ID 1000 10

这样就连续打印了10次gc的变化,每次隔一秒。

这个命令是对整体垃圾回收情况的统计,下面将会差分处理。

3.新生代垃圾回收统计
命令:

jstat -gcnew 进程ID [ 间隔时间 打印次数]
这个指的是当前某一次GC的内存情况

S0C:第一个Survivor的大小
S1C:第二个Survivor的大小
S0U:第一个Survivor已使用大小
S1U:第二个Survivor已使用大小
TT: 对象在新生代存活的次数
MTT: 对象在新生代存活的最大次数
DSS: 期望的Survivor大小
EC:Eden区的大小
EU:Eden区的使用大小
YGC:年轻代垃圾回收次数
YGCT:年轻代垃圾回收消耗时间
4. 新生代内存统计
jstat -gcnewcapacity 进程ID

参数含义:

NGCMN:新生代最小容量
NGCMX:新生代最大容量
NGC:当前新生代容量
S0CMX:Survivor 1区最大大小
S0C:当前Survivor 1区大小
S1CMX:Survivor 2区最大大小
S1C:当前Survivor 2区大小
ECMX:最大Eden区大小
EC:当前Eden区大小
YGC:年轻代垃圾回收次数
FGC:老年代回收次数
5. 老年代垃圾回收统计
命令:

jstat -gcold 进程ID

参数含义:

MC:方法区大小
MU:方法区已使用大小
CCSC:压缩指针类空间大小
CCSU:压缩类空间已使用大小
OC:老年代大小
OU:老年代已使用大小
YGC:年轻代垃圾回收次数
FGC:老年代垃圾回收次数
FGCT:老年代垃圾回收消耗时间
GCT:垃圾回收消耗总时间,新生代+老年代
6. 老年代内存统计
命令:

jstat -gcoldcapacity 进程ID

参数含义:

OGCMN:老年代最小容量
OGCMX:老年代最大容量
OGC:当前老年代大小
OC:老年代大小
YGC:年轻代垃圾回收次数
FGC:老年代垃圾回收次数
FGCT:老年代垃圾回收消耗时间
GCT:垃圾回收消耗总时间
7. 元数据空间统计
命令

jstat -gcmetacapacity 进程ID

MCMN:最小元数据容量
MCMX:最大元数据容量
MC:当前元数据空间大小
CCSMN:最小指针压缩类空间大小
CCSMX:最大指针压缩类空间大小
CCSC:当前指针压缩类空间大小
YGC:年轻代垃圾回收次数
FGC:老年代垃圾回收次数
FGCT:老年代垃圾回收消耗时间
GCT:垃圾回收消耗总时间

 

二. GC分析

1、统计垃圾回收的堆信息 jstat -gc

每秒统计垃圾回收的堆信息,打印10次,

 参数详解:

S0C:第一个幸存区的大小,单位KB
S1C:第二个幸存区的大小
S0U:第一个幸存区的使用大小
S1U:第二个幸存区的使用大小
EC:伊甸园区的大小
EU:伊甸园区的使用大小
OC:老年代大小
OU:老年代使用大小
MC:方法区大小
MU:方法区使用大小
CCSC:压缩类空间大小
CCSU:压缩类空间使用大小
YGC:年轻代垃圾回收次数
YGCT:年轻代垃圾回收消耗时间
FGC:老年代垃圾回收次数
FGCT:老年代垃圾回收消耗时间
GCT:垃圾回收消耗总时间

如上所示的java进程,老年代空间大小为200M左右,使用的老老年代空间为100M左右,所以老年代空间充足,再看FGC与YGC,分别为3.6和4,即老年代回收次数为3.6,年轻代回收次数为4。消耗接近包含。

现在我们来看一个内存溢出的进程信息:

可以看到老年代和新生代都占用满了,并且GCT垃圾回收时间上升,但是垃圾并没有被回收调,占用依旧拉满,也就是我们常说的垃圾回收不掉信息。

 查看对应log日志程序已经产生内存泄露:

 

  

标签:Survivor,回收,次数,详解,内存,JVM,大小,年代,垃圾
From: https://www.cnblogs.com/xfbk/p/17643455.html

相关文章

  • Crontab命令详解
    Linux系统则是由cron(crond)这个系统服务来控制的。Linux系统上面原本就有非常多的计划性工作,因此这个系统服务是默认启动的。另外,由于使用者自己也可以设置计划任务,所以,Linux系统也提供了使用者控制计划任务的命令:crontab命令。一、crond简介crond 是linux下用来周期......
  • 国标视频综合管理平台EasyCVR详解
    EasyCVR综合安防监控管理平台是一款基于网络的强大安防系统集成平台,具备多种功能和特性。该平台可以接入不同品牌的IPC、NVR等视频监控设备,并集成了视频监控、门禁管理、应急报警、巡更等多种安防系统。同时,它还支持流媒体级联技术,实现跨平台级联,统一管理和互联互动多个子系统,提高......
  • JVM
    一、JVM简介1.基本概念JVM(JavaVirtualMachine)全称:Java虚拟机JVM并不是真实的计算机,而是在真实计算机中的一个进程,是虚拟出来的一台计算机。所有的Java程序都是在JVM中运行的。JVM形成了对Java程序的保护。只要平台(系统)能运行JVM就能运行Java程序,且Java程序运行环境是一样......
  • Java 服务器cup占用率过高 以及 内存泄漏排查方法
    cup占用率过高常见能够引起CPU100%异常的情况都有哪些?Java 内存不够或者溢出导致GCoverheadlimitexceeded。代码中互相竞争导致的死锁。特别耗费计算资源的操作,比如正则匹配,Java中的正则匹配默认有回溯问题,复杂的正则匹配引起的CPU异常。死循环引起的CPU高度密集计算。针对第1......
  • C++程序的内存模型--模型四区
      C++中在程序运行前分为全局区和代码区 代码区特点是共享和只读 全局区中存放全局变量、静态变量、常量 常量区中存放const修饰的全局变量和字符串常量 //栈区//由编译器自动分配释放、存放函数的参数值、局部变量等//注意:不要返回局部变量的地址,栈区开辟的数据由编译器......
  • Fio工具详解【强大的IO性能压测工具】
    Fio压测工具操作fio-name=iouring_test-filename=/mnt/vdd/testfile-iodepth=128-thread-rw=randread-ioengine=io_uring-sqthread_poll=1-direct=1-bs=4k-size=10G-numjobs=1-runtime=120-group_reporting常用参数[time]runtime=time告诉fio在指定的时间段后......
  • Streamlit 讲解专栏(十):数据可视化-图表绘制详解(上)
    1前言在数据可视化的世界中,绘制清晰、易于理解的图表是非常关键的。Streamlit是一个流行的Python库,它提供了简单的界面和强大的功能,帮助用户轻松创建交互式应用程序和数据可视化。而其中的Chartelements(图表元素)部分则为我们提供了多种图表类型来展示数据。本文将深入介绍......
  • 内存内容分析
    上图中的内存是0xa00fde10地址,右面0-34-7等,是地址的偏移量,地址0xa00fde10的数据是F00xa00fde11数据是00,13地址数据是A0当该地址读取一个char数据时,是一个字节,读取的数据是F0,当读取一个int数据时,是4字节,读取的数据是A00000F0(从高地址往低地址读取)地址就是C语言中的变量,......
  • HTML详解连载(5)
    (HTML详解连载(5))专栏链接link下面进行专栏介绍本专栏是自己学前端的征程,纯手敲的代码,自己跟着黑马课程学习的,并加入一些自己的理解,对代码和笔记进行适当修改。希望能对大家能有所帮助,同时也是请大家对我进行监督,对我写的代码进行建议,互相学习。开始喽行高:设置多行文本的间......
  • 《网站建设:从规划到发布的全过程详解》
       一、引言在数字时代,网站已经成为企业和个人在互联网上的重要存在。一个优质网站的建立需要周全的规划、设计、开发、测试和发布。本文将详细介绍网站建设的全过程,帮助读者了解和掌握网站建设的流程和方法。二、网站建设的意义网站建设具有以下意义:品牌宣传:网站作......