首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

linux jstat gc

jstat 是 Java 虚拟机(JVM)统计监控工具,用于监视 Java 应用程序的性能和资源占用情况。jstat -gc 命令可以用来查看垃圾回收(GC)的统计信息。

基础概念

  • JVM:Java 虚拟机,是 Java 平台的核心组件,负责执行 Java 字节码。
  • 垃圾回收(GC):JVM 自动管理内存的过程,用于回收不再使用的对象所占用的内存空间。

jstat -gc 输出信息解读

运行 jstat -gc <pid> 1000 命令(其中 <pid> 是 Java 进程的 ID,1000 是采样间隔,单位为毫秒),可以得到如下类似的输出:

代码语言:txt
复制
 S0C    S1C    S0U    S1U      EC       EU        OC         OU       MC     MU         CCSC   CCSU       YGC    YGCT    FGC    FGCT     GCT   
21248.0 21248.0  0.0   862.6  212480.0 61071.5   5242880.0  1255556.4 35200.0 33813.8 4480.0 4241.2     10    0.420   2      0.170    0.590

各列的含义:

  • S0C/S1C:Survivor 0/1 区的容量(KB)。
  • S0U/S1U:Survivor 0/1 区的使用量(KB)。
  • EC/OU:Eden 区的容量和使用量(KB)。
  • OC/OU:老年代的容量和使用量(KB)。
  • MC/MU:元数据区的容量和使用量(KB)。
  • CCSC/CCSU:压缩类空间容量和使用量(KB)。
  • YGC/YGCT:年轻代垃圾回收次数和时间。
  • FGC/FGCT:完全垃圾回收次数和时间。
  • GCT:垃圾回收总时间。

优势

  • 实时监控 JVM 的 GC 活动。
  • 提供详细的内存使用和垃圾回收统计信息。
  • 帮助分析和调优 Java 应用程序的性能。

应用场景

  • 性能调优:通过分析 GC 日志和统计数据,找出内存泄漏或频繁 GC 的问题。
  • 资源管理:监控 JVM 内存使用情况,合理配置堆内存大小。
  • 故障排查:快速定位和解决与内存相关的性能问题。

常见问题及解决方法

  1. 频繁的 Young GC
    • 原因:可能是 Eden 区设置过小,或者对象生命周期短。
    • 解决方法:调整 -Xmn 参数增大 Eden 区大小,或者优化代码减少短期对象的创建。
  • 长时间的 Full GC
    • 原因:可能是老年代空间不足,或者存在内存泄漏。
    • 解决方法:增加堆内存大小,使用 -XX:MaxTenuringThreshold 调整对象晋升老年代的阈值,或者使用内存分析工具查找并解决内存泄漏问题。
  • 内存溢出(OutOfMemoryError)
    • 原因:堆内存设置过小,或者存在无法回收的内存。
    • 解决方法:增加堆内存大小,使用 -XX:+HeapDumpOnOutOfMemoryError 生成堆转储文件进行分析,找出并解决内存泄漏问题。

通过合理使用 jstat -gc 命令,可以有效地监控和调优 Java 应用程序的性能,确保其在高负载下稳定运行。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

jstat命令查看jvm的GC情况 (以Linux为例)

jstat命令查看jvm的GC情况 类加载统计: 编译统计 垃圾回收统计 堆内存统计 新生代垃圾回收统计 新生代内存统计 老年代垃圾回收统计 老年代内存统计 元数据空间统计 总结垃圾回收统计 JVM编译方法统计...jstat命令可以查看堆内存各部分的使用量,以及加载类的数量。...命令的格式如下: jstat [-命令选项] [vmid] [间隔时间/毫秒] [查询次数] 注意!!!:使用的jdk版本是jdk8....MCMN: 最小元数据容量 MCMX: 最大元数据容量 MC: 当前元数据空间大小 CCSMN: 最小压缩类空间大小 CCSMX: 最大压缩类空间大小 CCSC: 当前压缩类空间大小 YGC: 年轻代gc...次数 FGC: 老年代GC次数 新生代垃圾回收统计 S0C: 第一个幸存区大小 S1C: 第二个幸存区的大小 S0U: 第一个幸存区的使用大小 S1U: 第二个幸存区的使用大小 TT: 对象在新生代存活的次数

1.6K10
  • Jstat命令详解-1.8

    => 幸存区的大小 S0U => 幸存区的使用大小 -------------------------- \*C => (Capacity)区容量 \*U => (Used)使用量 jstat...-gc pid 垃圾回收统计 [1240] - S0C:第一个幸存区的大小 - S1C:第二个幸存区的大小 - S0U:第一个幸存区的使用大小 - S1U:第二个幸存区的使用大小 - EC...-gccapacity pid 堆内存统计 记忆这个命令可以根据单词组合记忆 -gc => 名称 capacity => 容量 [1240] NGCMN:新生代最小容量 NGCMX:新生代最大容量...MCMN:最小元数据容量 MCMX:最大元数据容量 MC:当前元数据空间大小 CCSMN:最小压缩类空间大小 CCSMX:最大压缩类空间大小 CCSC:当前压缩类空间大小 YGC:年轻代gc...次数 FGC:老年代GC次数 jstat -gcmetacapacity pid 元数据空间统计 [1240] MCMN:最小元数据容量 MCMX:最大元数据容量 MC:当前元数据空间大小

    2.5K30

    Jstat命令实战

    使用Jstat查看类加载变化趋势,使用到的命令具体为: jstat -class pid 毫秒 次数 所以程序启动后,首先获取到程序的PID信息,然后查看每个3秒类加载,总共加载15次,具体过程中涉及的命令如下...如下是每隔3秒收集一次并且收集次数是10次,命令为: jstat -gc 42265 3000 10 S0C S1C S0U S1U EC EU...区总量与使用量 MC、MU:Metaspace区总量与使用量 CCSC、CCSU:压缩类空间总量与使用量 YGC、YGCT:YoungGC的次数与时间 FGC、FGCT:FullGC的次数与时间 GCT:总的GC...通过如上命令行案例实战以及输出,结合Jstat命令行能够分析出GC中垃圾收集的数据,然后来逐步的对程序进行调优。...最后演示下使用Jstat来进行JIT的编译,具体命令如下: jstat -compiler 42559 Compiled Failed Invalid Time FailedType FailedMethod

    48020

    jstat的用法

    GC 所用的时间(单位秒) GCT — 从应用程序启动到采样时用于垃圾回收的总时间(单位秒) 实例使用1: [root@localhost bin]# jstat -gcutil 25444  ...绿框中,我们可以看到,一次full gc之后,Old space区(O)的内存被回收,从99.05%降到67.52%。 图中同时打印了young gc和full gc的总次数、总耗时。...而,每次young gc消耗的时间,可以用相间隔的两行YGCT相减得到。每次full gc消耗的时间,可以用相隔的两行FGCT相减得到。...如果young gc和full gc能够正常发生,而且都能有效回收内存,常驻内存区变化不明显,则说明java内存释放情况正常,垃圾回收及时,java内存泄露的几率就会大大降低。...以上,介绍了Jstat按百分比查看gc情况的功能。其实,它还有功能,例如加载类信息统计功能、内存池信息统计功能等,那些是以绝对值的形式打印出来的,比较少用,在此就不做介绍。

    75510

    jstat命令详解

    次数 FGC 从应用程序启动到采样时old代(全gc)gc次数 5、jstat -gcutil :统计gc信息 显示列名 具体描述 S0 年轻代中第一个survivor(幸存区)已使用的占当前容量百分比...从应用程序启动到采样时gc用的总时间(s) 6、jstat -gcnew :年轻代对象的信息。...次数 FGC 从应用程序启动到采样时old代(全gc)gc次数 8、jstat -gcold :old代对象的信息。...次数 FGC 从应用程序启动到采样时old代(全gc)gc次数 FGCT 从应用程序启动到采样时old代(全gc)gc所用时间(s) GCT 从应用程序启动到采样时gc用的总时间(s) 10、jstat...次数 FGC 从应用程序启动到采样时old代(全gc)gc次数 FGCT 从应用程序启动到采样时old代(全gc)gc所用时间(s) GCT 从应用程序启动到采样时gc用的总时间(s) 11、jstat

    3.7K40

    Java程序性能分析:内存

    、HeapDump 等 以 openjdk 11.0.13、G1 垃圾收集器、Linux系统 为例 二、GC分析:jstat 1. jstat 简介 jstat 全称 “Java Virtual Machine...jstat --help:查看命令帮助 jstat -options:返回有哪些命令选项,如 -gcutil、-gc、-gccapacity、-gccause,另有 -class、-compiler、-...)、Full GC执行迅速(1秒以内)、Full GC执行不频繁(间隔10分钟左右一次) 图片 3. jstat -gc 列出 各区域的容量Capacity、使用大小 Utilization,单位是 KB...,有容量大小,没有百分比 YGC 开始,是各区域 GC次数、耗时 图片 4. jstat -gccapacity 主要关注 各区域 最小(Min,MN结尾)、最大(Max,MX结尾)、当前(Capacity...HeapDump社区阿里大神创业的产品,除了工具,还有不少性能方面的案例 五、总结 jstat 可以看到 容量、使用量、最小最大容量、使用率、GC耗时、GC是否频繁 jmap 可以 快速分析简单的内存占用

    37711

    深入理解java虚拟机学习笔记(三)-虚拟机性能监控与故障处理工具

    jstat 虚拟机统计信息监控工具 jstat命令格式: jstat [option vmid [interval [s|ms] [count] ] ] 表示 选项 进程ID 间隔时间[s|ms...、已用空间、GC时间等统计信息 -gccapacity 监视与-gc基本相同,但是输出关注java堆的各个区域的最大、最小空间 -gcutil 监视内容与-gc基本相同,但输出的主要关注已使用空间占总空间的百分比...-gccause 与-gcutil基本相同,但会输出上一次GC产生的原因 -gcnew 监视新生代的GC状况 -gcnewcapacity 监视与-gcnew基本相同,但是输出关注java堆的各个区域的最大...,]format=b,file=,其中live子参数说明是否只dump出存活的对象 -finalizerinfo 显示在F-Queue中等待Finalizer线程执行的finalize方法的对象,只在Linux...只在Linux/Solairs平台下有效 -F 当虚拟机对-dump选项没有响应时,可以使用这个参数强制生成dump快照,只在Linux/Solairs平台下有效 1.4 jhat 该命令主要与jmap

    71520

    jvm jstat 命令使用

    GC 所用的时间(单位秒) GCT — 从应用程序启动到采样时用于垃圾回收的总时间(单位秒) 实例使用1: [root@localhost bin]# jstat -gcutil 25444...绿框中,我们可以看到,一次full gc之后,Old space区(O)的内存被回收,从99.05%降到67.52%。 图中同时打印了young gc和full gc的总次数、总耗时。...而,每次young gc消耗的时间,可以用相间隔的两行YGCT相减得到。每次full gc消耗的时间,可以用相隔的两行FGCT相减得到。...如果young gc和full gc能够正常发生,而且都能有效回收内存,常驻内存区变化不明显,则说明java内存释放情况正常,垃圾回收及时,java内存泄露的几率就会大大降低。...以上,介绍了Jstat按百分比查看gc情况的功能。其实,它还有功能,例如加载类信息统计功能、内存池信息统计功能等,那些是以绝对值的形式打印出来的,比较少用,在此就不做介绍。

    48710

    jstat -gcnew命令详解

    jvisualvm为什么还需要用jstat命令行呢,jstat虽然可视化效果差些,但其在实际生产环境用起来却很方便,一般线上环境不会打开jmxremote功能,这样jvisualvm就无用武之地。...,然后发生gc,这给我们研究gc过程带来诸多不便,好了废话不多说了,接下来看下jstat -gcnew用于统计年轻代垃圾收集统计 输入jstat -h就可以输出jstat命令的使用说明,使用jstat...-options可以获取jstat命令支持的可选项 接下来我们用jstat命令来监控本地启动的一个jvm进程 上面监控进程23108的年轻代垃圾收集情况,每2秒收集一次,从上图可以看到,数据是比较稳定的...,这个值默认为Survivor区的50%,当Survivor区大小超过该值时就会将装不下的对象提前放入老年代 EC Eden区容量,单位为KB EU Eden区使用量,单位为KB YGC Young GC...次数 YGCT Young GC花费时间

    43310

    Linux下Tomcat开启查看GC日志

    /logs/tomcat_gc.log 若只是使用,搞懂配置,只需看第二、三、四即可;若想更深入的了解GC,请详细看完~ 二、GC日志分析 GC 日志分析,需使用windows 的GC日志分析工具gchisto...日志 ① 将linux 下的tomcat 日志sz 到windows 上; ② 导入gchisto中; ③ 查看效果 三、选项参数详解 1、堆大小设置 ① -Xmx3550m -Xms3550m -...2、GC类型  GC有两种类型:Scavenge GC和Full GC。...(1)Scavenge GC    一般情况下,当新对象生成,并且在Eden申请空间失败时,就好触发Scavenge GC,堆Eden区域进行GC,清除非存活对象,并且把尚且存活的对象移动到Survivor...(2)Full GC    对整个堆进行整理,包括Young、Tenured和Perm。Full GC比Scavenge GC要慢,因此应该尽可能减少Full GC。

    20.9K50

    JDK常用自带工具 & IDEA 插件:VisualGC

    JDK 自带了很多常用工具方面我们进行一些性能监控与调试 在Windows工具都在我们JDK的bin目标下,Linux依旧有相关的命令 JVM工具可按照使用形式进行分类 命令行工具 jps jstat...-gc:显示有关垃圾收集堆行为的统计信息 -gcutil:显示有关垃圾收集堆行为的统计信息的百分比 .......、 YGC与YGCT表示Young GC执行次数与与时间、 FGC与FGCT:Full GC执行的次数与时间、GCT:总垃圾收集时间 jstat 查看堆内存 实验案例 其他方式:https://www.zanglikun.com...-gc PID # 查看GC使用百分比 jstat -gcutil PID image.png 这是我使用Idea插件 VisualGC 记录的,放在这里方便理解jstat的使用 我们从图中可以清晰看出来...,在b3 数组 new 出来之前,内存已经不容许new 出来之后的,所以 JVM 执行了一次GC。

    2K20

    JVM 问题排查和性能优化常用的 JDK 工具

    jps 如果你用过 Linux,那肯定熟悉 ps 命令,用来查看进程列表的。jps 就好比是 ps 命令的子集,它查询的是当前用户下已经启动的 Java 进程。...=/users/fengzheng/jvmlog 哪些参数是允许动态修改的呢,用下面这个命令可以查看 #Linux 和 Mac java -XX:+PrintFlagsInitial | grep manageable...比如每 3 秒打印一次 GC 回收次数,连续打印 10 次,通过动态的变化来观察 GC 是否过于密集。 下面是 jstat 的帮助手册。...通过 jstat -options 可以看到 jstat 支持查看哪些信息。...$ jstat -options -class #类加载情况 加载个数和空间使用 -compiler #即时编译器信息 -gc # GC情况 包括 young gc、full gc 次数、时间等 -

    1.3K40

    毕业十年,年薪百万!因为我掌握这些JDK性能调优神器!

    jps 类似Linux的ps,但jps只列出Java进程。可方便查看Java进程的启动类、传入参数和JVM参数。直接运行,不加参数,列出Java程序的进程ID及Main函数名称。...jps命令本质也是Java程序 -m:输出传递给Java进程的参数 -l:输出主函数的完整路径 -q:只输出进程ID -v:显示传递给jvm的参数 jstat 观察Java应用程序运行时信息的工具...,详细查看堆使用情况以及GC情况 jstat -options 1.2.1 jstat -class pid 显示加载class的数量及所占空间等信息 -compiler -t:显示JIT编译的信息...1.2.2 -gc pid 显示gc信息,查看gc的次数及时间 ➜ ~ jstat -gc 87552 S0C S1C S0U S1U EC EU...多了各个代的最大值和最小值 -gccause 最近一次GC统计和原因 LGCC:上次GC原因 GCC:当前GC原因 jstat -gcnewcapacity pid:new对象的信息及其占用量

    24030

    Java性能调优工具之JDK命令行

    1.1 jps 类似Linux的ps,但是jps只用于列出Java的进程 可以方便查看Java进程的启动类,传入参数和JVM参数等 直接运行,不加参数,列出Java程序的进程ID以及Main函数等名称...-v 显示传递给jvm的参数 1.2 jstat 用于观察Java应用程序运行时信息的工具,详细查看堆使用情况以及GC情况 ?...image.png jstat -class pid:显示加载class的数量,及所占空间等信息。 ? -compiler -t:显示JIT编译的信息 ?...-gc pid:可以显示gc的信息,查看gc的次数,及时间。其中最后五项,分别是young gc的次数,young gc的时间,full gc的次数,full gc的时间,gc的总时间。 ?...-gcutil显示GC回收相关信息 ? jstat -printcompilation pid:当前VM执行的信息。 还可以同时加两个数 ?

    1.3K80
    领券