热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

JVM——jstat命令

 概述Jstat是JDK自带的一个轻量级小工具。全称“JavaVirtualMachinestatisticsmonitoringtool”,它位于java的bin目录下,主要利用

 

概述

Jstat是JDK自带的一个轻量级小工具。全称“Java Virtual Machine statistics monitoring tool”,它位于java的bin目录下,

主要利用JVM内建的指令对Java应用程序的资源和性能进行实时的命令行的监控,包括了对Heap size和垃圾回收状况的监控。

 

jstat 用法

[root@push ~]# jstat -help
Usage: jstat -help|-options
       jstat -
  • option: 参数选项
  • -t: 可以在打印的列加上Timestamp列,用于显示系统运行的时间
  • -h: 可以在周期性数据数据的时候,可以在指定输出多少行以后输出一次表头
  • vmid: Virtual Machine ID( 进程的 pid)
  • interval: 执行每次的间隔时间,单位为毫秒
  • count: 用于指定输出多少次记录,缺省则会一直打印

option 参数选项:

[root@push ~]# jstat -options
-class
-compiler
-gc
-gccapacity
-gccause
-gcmetacapacity
-gcnew
-gcnewcapacity
-gcold
-gcoldcapacity
-gcutil
-printcompilation
  • -class: 显示ClassLoad的相关信息;
  • -compiler: 显示JIT编译的相关信息;
  • -gc: 显示和gc相关的堆信息;
  • -gccapacity:    显示各个代的容量以及使用情况;
  • -gcmetacapacity: 显示metaspace的大小
  • -gcnew: 显示新生代信息;
  • -gcnewcapacity: 显示新生代大小和使用情况;
  • -gcold: 显示老年代和永久代的信息;
  • -gcoldcapacity: 显示老年代的大小;
  • -gcutil:   显示垃圾收集信息;
  • -gccause: 显示垃圾回收的相关信息(通-gcutil),同时显示最后一次或当前正在发生的垃圾回收的诱因;
  • -printcompilation: 输出JIT编译的方法信息;
 

JVM内存布局

想要明白jstat命令输出结果的含义,先看一张图,这张图很清晰的说明JVM内存结构的布局和相应的控制参数:

JVM——jstat命令

可以看出:

  • 堆内存 = 年轻代 + 年老代

  • 年轻代 = Eden区 + 两个Survivor区(From和To)

现在来解释各列的含义:

  • S0C、S1C、S0U、S1U:Survivor 0/1区容量(Capacity)和使用量(Used)

  • EC、EU:Eden区容量和使用量

  • OC、OU:年老代容量和使用量

  • PC、PU:永久代容量和使用量

  • YGC、YGT:年轻代GC次数和GC耗时

  • FGC、FGCT:Full GC次数和Full GC耗时 GCT:GC总耗时

 

示例一:-class

命令:jstat -class >

描述:显示加载class的数量,及所占空间等信息。

JVM——jstat命令

说明:

  • Loaded : 已经装载的类的数量
  • Bytes : 装载类所占用的字节数,以KB为单位
  • Unloaded:已经卸载类的数量
  • Bytes:卸载类的字节数,以KB为单位
  • Time:装载和卸载类所花费的时间

 

示例二: -compiler

命令:jstat -compiler >

描述:显示VM实时编译(JIT)的数量等信息。

JVM——jstat命令

说明:

  • Compiled:编译任务执行数量
  • Failed:编译任务执行失败数量
  • Invalid :编译任务执行失效数量
  • Time :编译任务消耗时间
  • FailedType:最后一个编译失败任务的类型
  • FailedMethod:最后一个编译失败任务所在的类及方法
 

示例三: -gc

命令:jstat -gc >

描述:显示gc相关的堆信息,查看gc的次数,及时间。

JVM——jstat命令

说明:

  • S0C:年轻代中第一个survivor(幸存区)的容量 (KB)
  • S1C:年轻代中第二个survivor(幸存区)的容量 (KB)
  • S0U:年轻代中第一个survivor(幸存区)目前已使用空间 (KB)
  • S1U:年轻代中第二个survivor(幸存区)目前已使用空间 (KB)
  • EC:年轻代中Eden(伊甸园)的容量 (KB)
  • EU:年轻代中Eden(伊甸园)目前已使用空间 (KB)
  • OC:Old代的容量 (KB)
  • OU:Old代目前已使用空间 (KB)
  • MC:metaspace(元空间)的容量 (KB)
  • MU:metaspace(元空间)目前已使用空间 (KB)
  • YGC:从应用程序启动到采样时年轻代中gc次数
  • YGCT:从应用程序启动到采样时年轻代中gc所用时间(s)
  • FGC:从应用程序启动到采样时old代(全gc)gc次数
  • FGCT:从应用程序启动到采样时old代(全gc)gc所用时间(s)
  • GCT:从应用程序启动到采样时gc用的总时间(s)
 

示例四: -gccapacity

命令:jstat -gccapacity >

描述:显示VM内存中三代(young,old,perm)对象的使用和占用大小。

JVM——jstat命令

说明:

  • NGCMN :年轻代(young)中初始化(最小)的大小(KB)
  • NGCMX :年轻代(young)的最大容量 (KB)
  • NGC :年轻代(young)中当前的容量 (KB)
  • S0C :年轻代中第一个survivor(幸存区)的容量 (KB)
  • S1C : 年轻代中第二个survivor(幸存区)的容量 (KB)
  • EC :年轻代中Eden(伊甸园)的容量 (KB)
  • OGCMN :old代中初始化(最小)的大小 (KB)
  • OGCMX :old代的最大容量(KB)
  • OGC:old代当前新生成的容量 (KB)
  • OC :old代的容量 (KB)
  • MCMN:metaspace(元空间)中初始化(最小)的大小 (KB)
  • MCMX :metaspace(元空间)的最大容量 (KB)
  • MC :metaspace(元空间)当前新生成的容量 (KB)
  • CCSMN:最小压缩类空间大小
  • CCSMX:最大压缩类空间大小
  • CCSC:当前压缩类空间大小
  • YGC :从应用程序启动到采样时年轻代中gc次数
  • FGC:从应用程序启动到采样时old代(全gc)gc次数
 

示例五:-gcmetacapacity

命令:jstat -gcmetacapacity >

描述:metaspace 中对象的信息及其占用量。

JVM——jstat命令

说明:

  • MCMN:最小元数据容量
  • MCMX:最大元数据容量
  • MC:当前元数据空间大小
  • CCSMN:最小压缩类空间大小
  • CCSMX:最大压缩类空间大小
  • CCSC:当前压缩类空间大小
  • YGC :从应用程序启动到采样时年轻代中gc次数
  • FGC :从应用程序启动到采样时old代(全gc)gc次数
  • FGCT :从应用程序启动到采样时old代(全gc)gc所用时间(s)
  • GCT:从应用程序启动到采样时gc用的总时间(s)
 

示例六: -gcnew

命令:jstat -gcnew >

描述:年轻代中对象的信息及其占用量。

JVM——jstat命令

说明:

  • S0C :年轻代中第一个survivor(幸存区)的容量 (KB)
  • S1C :年轻代中第二个survivor(幸存区)的容量 (KB)
  • S0U :年轻代中第一个survivor(幸存区)目前已使用空间 (KB)
  • S1U :年轻代中第二个survivor(幸存区)目前已使用空间 (KB)
  • TT:持有次数限制
  • MTT:最大持有次数限制
  • DSS:期望的幸存区大小
  • EC:年轻代中Eden(伊甸园)的容量 (KB)
  • EU :年轻代中Eden(伊甸园)目前已使用空间 (KB)
  • YGC :从应用程序启动到采样时年轻代中gc次数
  • YGCT:从应用程序启动到采样时年轻代中gc所用时间(s)
 

示例七: -gcnewcapacity

命令:jstat -gcnewcapacity >

描述:年轻代对象的信息及其占用量。

JVM——jstat命令

说明:

  • NGCMN :年轻代(young)中初始化(最小)的大小(KB)
  • NGCMX :年轻代(young)的最大容量 (KB)
  • NGC :年轻代(young)中当前的容量 (KB)
  • S0CMX :年轻代中第一个survivor(幸存区)的最大容量 (KB)
  • S0C :年轻代中第一个survivor(幸存区)的容量 (KB)
  • S1CMX :年轻代中第二个survivor(幸存区)的最大容量 (KB)
  • S1C:年轻代中第二个survivor(幸存区)的容量 (KB)
  • ECMX:年轻代中Eden(伊甸园)的最大容量 (KB)
  • EC:年轻代中Eden(伊甸园)的容量 (KB)
  • YGC:从应用程序启动到采样时年轻代中gc次数
  • FGC:从应用程序启动到采样时old代(全gc)gc次数
 

示例八: -gcold

命令:jstat -gcold >

描述:老年代对象的信息。

JVM——jstat命令

说明:

  • MC :metaspace(元空间)的容量 (KB)
  • MU:metaspace(元空间)目前已使用空间 (KB)
  • CCSC:压缩类空间大小
  • CCSU:压缩类空间使用大小
  • OC:Old代的容量 (KB)
  • OU:Old代目前已使用空间 (KB)
  • YGC:从应用程序启动到采样时年轻代中gc次数
  • FGC:从应用程序启动到采样时old代(全gc)gc次数
  • FGCT:从应用程序启动到采样时old代(全gc)gc所用时间(s)
  • GCT:从应用程序启动到采样时gc用的总时间(s)

示例九:-gcoldcapacity

命令:jstat -gcoldcapacity >

描述:老年代对象的信息及占用量。

JVM——jstat命令

说明:

  • OGCMN :old代中初始化(最小)的大小 (KB)
  • OGCMX :old代的最大容量(KB)
  • OGC :old代当前新生成的容量 (KB)
  • OC :old代的容量 (KB)
  • YGC :从应用程序启动到采样时年轻代中gc次数
  • FGC :从应用程序启动到采样时old代(全gc)gc次数
  • FGCT :从应用程序启动到采样时old代(全gc)gc所用时间(s)
  • GCT:从应用程序启动到采样时gc用的总时间(s)
 

示例十: - gcutil

命令:jstat -gcutil >

描述:统计gc信息。

JVM——jstat命令

说明:

  • S0 :年轻代中第一个survivor(幸存区)已使用的占当前容量百分比
  • S1 :年轻代中第二个survivor(幸存区)已使用的占当前容量百分比
  • E :年轻代中Eden(伊甸园)已使用的占当前容量百分比
  • O :old代已使用的占当前容量百分比
  • P :perm代已使用的占当前容量百分比
  • YGC :从应用程序启动到采样时年轻代中gc次数
  • YGCT :从应用程序启动到采样时年轻代中gc所用时间(s)
  • FGC :从应用程序启动到采样时old代(全gc)gc次数
  • FGCT :从应用程序启动到采样时old代(全gc)gc所用时间(s)
  • GCT:从应用程序启动到采样时gc用的总时间(s)
 

示例十一:-gccause

命令:jstat -gccause >

描述:统计gc信息。

JVM——jstat命令

说明:

  • LGCC:最后一次GC原因
  • GCC:当前GC原因(No GC 为当前没有执行GC)

 


引用:
  • https://www.jianshu.com/p/213710fb9e40

推荐阅读
  • C++ 异步编程中获取线程执行结果的方法与技巧及其在前端开发中的应用探讨
    本文探讨了C++异步编程中获取线程执行结果的方法与技巧,并深入分析了这些技术在前端开发中的应用。通过对比不同的异步编程模型,本文详细介绍了如何高效地处理多线程任务,确保程序的稳定性和性能。同时,文章还结合实际案例,展示了这些方法在前端异步编程中的具体实现和优化策略。 ... [详细]
  • 解决Bootstrap DataTable Ajax请求重复问题
    在最近的一个项目中,我们使用了JQuery DataTable进行数据展示,虽然使用起来非常方便,但在测试过程中发现了一个问题:当查询条件改变时,有时查询结果的数据不正确。通过FireBug调试发现,点击搜索按钮时,会发送两次Ajax请求,一次是原条件的请求,一次是新条件的请求。 ... [详细]
  • MySQL初级篇——字符串、日期时间、流程控制函数的相关应用
    文章目录:1.字符串函数2.日期时间函数2.1获取日期时间2.2日期与时间戳的转换2.3获取年月日、时分秒、星期数、天数等函数2.4时间和秒钟的转换2. ... [详细]
  • 第二十五天接口、多态
    1.java是面向对象的语言。设计模式:接口接口类是从java里衍生出来的,不是python原生支持的主要用于继承里多继承抽象类是python原生支持的主要用于继承里的单继承但是接 ... [详细]
  • 本文将详细介绍如何在Mac上安装Jupyter Notebook,并提供一些常见的问题解决方法。通过这些步骤,您将能够顺利地在Mac上运行Jupyter Notebook。 ... [详细]
  • 在Cisco IOS XR系统中,存在提供服务的服务器和使用这些服务的客户端。本文深入探讨了进程与线程状态转换机制,分析了其在系统性能优化中的关键作用,并提出了改进措施,以提高系统的响应速度和资源利用率。通过详细研究状态转换的各个环节,本文为开发人员和系统管理员提供了实用的指导,旨在提升整体系统效率和稳定性。 ... [详细]
  • MATLAB字典学习工具箱SPAMS:稀疏与字典学习的详细介绍、配置及应用实例
    SPAMS(Sparse Modeling Software)是一个强大的开源优化工具箱,专为解决多种稀疏估计问题而设计。该工具箱基于MATLAB,提供了丰富的算法和函数,适用于字典学习、信号处理和机器学习等领域。本文将详细介绍SPAMS的配置方法、核心功能及其在实际应用中的典型案例,帮助用户更好地理解和使用这一工具箱。 ... [详细]
  • Web开发框架概览:Java与JavaScript技术及框架综述
    Web开发涉及服务器端和客户端的协同工作。在服务器端,Java是一种优秀的编程语言,适用于构建各种功能模块,如通过Servlet实现特定服务。客户端则主要依赖HTML进行内容展示,同时借助JavaScript增强交互性和动态效果。此外,现代Web开发还广泛使用各种框架和库,如Spring Boot、React和Vue.js,以提高开发效率和应用性能。 ... [详细]
  • Vue CLI 初始化 Webpack 项目时,main.js 文件是如何被调用的? ... [详细]
  • 在 Vue 应用开发中,页面状态管理和跨页面数据传递是常见需求。本文将详细介绍 Vue Router 提供的两种有效方式,帮助开发者高效地实现页面间的数据交互与状态同步,同时分享一些最佳实践和注意事项。 ... [详细]
  • 尽管我们尽最大努力,任何软件开发过程中都难免会出现缺陷。为了更有效地提升对支持部门的协助与支撑,本文探讨了多种策略和最佳实践,旨在通过改进沟通、增强培训和支持流程来减少这些缺陷的影响,并提高整体服务质量和客户满意度。 ... [详细]
  • poj 3352 Road Construction ... [详细]
  • Python 伦理黑客技术:深入探讨后门攻击(第三部分)
    在《Python 伦理黑客技术:深入探讨后门攻击(第三部分)》中,作者详细分析了后门攻击中的Socket问题。由于TCP协议基于流,难以确定消息批次的结束点,这给后门攻击的实现带来了挑战。为了解决这一问题,文章提出了一系列有效的技术方案,包括使用特定的分隔符和长度前缀,以确保数据包的准确传输和解析。这些方法不仅提高了攻击的隐蔽性和可靠性,还为安全研究人员提供了宝贵的参考。 ... [详细]
  • 本文将继续探讨 JavaScript 函数式编程的高级技巧及其实际应用。通过一个具体的寻路算法示例,我们将深入分析如何利用函数式编程的思想解决复杂问题。示例中,节点之间的连线代表路径,连线上的数字表示两点间的距离。我们将详细讲解如何通过递归和高阶函数等技术实现高效的寻路算法。 ... [详细]
  • 本文详细探讨了JavaScript中数组去重的各种方法,并通过实际代码示例进行了深入解析。文章首先介绍了几种常见的去重技术,包括使用Set对象、过滤方法和双重循环等。每种方法都附有具体的实现代码,帮助读者更好地理解和应用这些技术。此外,文中还讨论了不同方法在性能上的优劣,为开发者提供了实用的参考。 ... [详细]
author-avatar
轩轩20110804
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有