Java命令学习系列(四)——jstat

转载自 Java命令学习系列(四)——jstat

jstat(JVM Statistics Monitoring Tool)是用于监控虚拟机各种运行状态信息的命令行工具。他可以显示本地或远程虚拟机进程中的类装载、内存、垃圾收集、JIT编译等运行数据,在没有GUI图形的服务器上,它是运行期定位虚拟机性能问题的首选工具。

jstat位于java的bin目录下,主要利用JVM内建的指令对Java应用程序的资源和性能进行实时的命令行的监控,包括了对Heap size和垃圾回收状况的监控。可见,Jstat是轻量级的、专门针对JVM的工具,非常适用。

jstat 命令格式

 jstat -<option> [-t] [-h<lines>] <vmid> [<interval> [<count>]]

参数解释:

Option — 选项,我们一般使用 -gcutil 查看gc情况

vmid — VM的进程号,即当前运行的java进程号

interval– 间隔时间,单位为秒或者毫秒

count — 打印次数,如果缺省则打印无数次

参数interval和count代表查询间隔和次数,如果省略这两个参数,说明只查询一次。假设需要每250毫秒查询一次进程5828垃圾收集状况,一共查询5次,那命令行如下:

jstat -gc 5828 250 5

对于命令格式中的VMIDLVMID需要特别说明下:如果是本地虚拟机进程,VMID(Virtual Machine IDentifier,虚机标识符)和LVMID(Local Virtual Machine IDentifier,虚机标识符)是一致的,如果是远程虚拟机进程,那VMID的格式应当是:

[protocol:][//] lvmid [@hostname[:port]/servername]

option

选项option代表这用户希望查询的虚拟机信息,主要分为3类:类装载、垃圾收集和运行期编译状况,具体选项及作用如下:

-class 监视类装载、卸载数量、总空间及类装载所耗费的时间 

-gc 监视Java堆状况,包括Eden区、2个Survivor区、老年代、永久代等的容量 

-gccapacity 监视内容与-gc基本相同,但输出主要关注Java堆各个区域使用到的最大和最小空间

-gcutil监视内容与-gc基本相同,但输出主要关注已使用空间占总空间的百分比 

-gccause 与-gcutil功能一样,但是会额外输出导致上一次GC产生的原因 

-gcnew 监视新生代GC的状况 

-gcnewcapacity 监视内容与-gcnew基本相同,输出主要关注使用到的最大和最小空间

 -gcold 监视老年代GC的状况

 -gcoldcapacity 监视内容与——gcold基本相同,输出主要关注使用到的最大和最小空间

-gcpermcapacity 输出永久代使用到的最大和最小空间 

-compiler 输出JIT编译器编译过的方法、耗时等信息 -printcompilation 输出已经被JIT编译的方法

常见术语

1、jstat –class<pid> : 显示加载class的数量,及所占空间等信息。

Loaded 装载的类的数量 

Bytes 装载类所占用的字节数 

Unloaded 卸载类的数量 

Bytes 卸载类的字节数 

Time装载和卸载类所花费的时间

2、jstat -compiler <pid>显示VM实时编译的数量等信息。

Compiled 编译任务执行数量 

Failed 编译任务执行失败数量 

Invalid 编译任务执行失效数量 

Time 编译任务消耗时间 

FailedType 最后一个编译失败任务的类型 

FailedMethod 最后一个编译失败任务所在的类及方法

3、jstat -gc <pid>: 可以显示gc的信息,查看gc的次数,及时间。

S0C 年轻代中第一个survivor(幸存区)的容量 (字节) 

S1C年轻代中第二个survivor(幸存区)的容量 (字节) 

S0U 年轻代中第一个survivor(幸存区)目前已使用空间 (字节) 

S1U 年轻代中第二个survivor(幸存区)目前已使用空间 (字节) 

EC 年轻代中Eden(伊甸园)的容量 (字节) 

EU 年轻代中Eden(伊甸园)目前已使用空间 (字节) 

OC Old代的容量 (字节) 

OU Old代目前已使用空间 (字节) 

PC Perm(持久代)的容量 (字节) 

PUPerm(持久代)目前已使用空间 (字节) 

YGC 从应用程序启动到采样时年轻代中gc次数 

YGCT 从应用程序启动到采样时年轻代中gc所用时间(s) 

FGC 从应用程序启动到采样时old代(全gc)gc次数 

FGCT 从应用程序启动到采样时old代(全gc)gc所用时间(s) 

GCT 从应用程序启动到采样时gc用的总时间(s)

4、jstat -gccapacity <pid>:可以显示,VM内存中三代(young,old,perm)对象的使用和占用大小

NGCMN 年轻代(young)中初始化(最小)的大小(字节)

NGCMX 年轻代(young)的最大容量 (字节) 

NGC 年轻代(young)中当前的容量 (字节) 

S0C 年轻代中第一个survivor(幸存区)的容量 (字节) 

S1C 年轻代中第二个survivor(幸存区)的容量 (字节) 

EC 年轻代中Eden(伊甸园)的容量 (字节) 

OGCMN old代中初始化(最小)的大小 (字节) 

OGCMX old代的最大容量(字节) 

OGC old代当前新生成的容量 (字节) 

OC Old代的容量 (字节) 

PGCMN perm代中初始化(最小)的大小 (字节) 

PGCMX perm代的最大容量 (字节)
PGC perm代当前新生成的容量 (字节) 

PC Perm(持久代)的容量 (字节) 

YGC 从应用程序启动到采样时年轻代中gc次数 

FGC从应用程序启动到采样时old代(全gc)gc次数

5、jstat -gcutil <pid>:统计gc信息

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)

6、jstat -gcnew <pid>:年轻代对象的信息。

S0C 年轻代中第一个survivor(幸存区)的容量 (字节) 

S1C年轻代中第二个survivor(幸存区)的容量 (字节) 

S0U 年轻代中第一个survivor(幸存区)目前已使用空间 (字节) 

S1U 年轻代中第二个survivor(幸存区)目前已使用空间 (字节) 

TT 持有次数限制 

MTT 最大持有次数限制 

EC 年轻代中Eden的容量 (字节) 

EU 年轻代中Eden目前已使用空间 (字节) 

YGC 从应用程序启动到采样时年轻代中gc次数 

YGCT 从应用程序启动到采样时年轻代中gc所用时间(s)

7、jstat -gcnewcapacity<pid>: 年轻代对象的信息及其占用量。

NGCMN 年轻代(young)中初始化(最小)的大小(字节) 

NGCMX 年轻代(young)的最大容量 (字节) 

NGC 年轻代(young)中当前的容量 (字节) 

S0CMX 年轻代中第一个survivor(幸存区)的最大容量 (字节) 

S0C 年轻代中第一个survivor(幸存区)的容量 (字节) 

S1CMX 年轻代中第二个survivor(幸存区)的最大容量 (字节) 

S1C 年轻代中第二个survivor(幸存区)的容量 (字节) 

ECMX 年轻代中Eden(伊甸园)的最大容量 (字节) 

EC 年轻代中Eden(伊甸园)的容量 (字节) 

YGC 从应用程序启动到采样时年轻代中gc次数 

FGC 从应用程序启动到采样时old代(全gc)gc次数

8、jstat -gcold <pid>:old代对象的信息。

PC Perm(持久代)的容量 (字节) 

PU Perm(持久代)目前已使用空间 (字节) 

OC Old代的容量 (字节) 

OU Old代目前已使用空间 (字节) 

YGC 从应用程序启动到采样时年轻代中gc次数 

FGC 从应用程序启动到采样时old代(全gc)gc次数 

FGCT 从应用程序启动到采样时old代(全gc)gc所用时间(s) 

GCT 从应用程序启动到采样时gc用的总时间(s)

9、stat -gcoldcapacity <pid>: old代对象的信息及其占用量。

OGCMN old代中初始化(最小)的大小 (字节) 

OGCMX old代的最大容量(字节) 

OGC old代当前新生成的容量 (字节) 

OC Old代的容量 (字节) 

YGC 从应用程序启动到采样时年轻代中gc次数 

FGC 从应用程序启动到采样时old代(全gc)gc次数 

FGCT 从应用程序启动到采样时old代(全gc)gc所用时间(s) 

GCT 从应用程序启动到采样时gc用的总时间(s)

10、jstat -gcpermcapacity<pid>: perm对象的信息及其占用量。

PGCMN perm代中初始化(最小)的大小 (字节) 

PGCMX perm代的最大容量 (字节)
PGC perm代当前新生成的容量 (字节) 

PC Perm(持久代)的容量 (字节) 

YGC 从应用程序启动到采样时年轻代中gc次数 

FGC从应用程序启动到采样时old代(全gc)gc次数 

FGCT 从应用程序启动到采样时old代(全gc)gc所用时间(s) 

GCT 从应用程序启动到采样时gc用的总时间(s)

11、jstat -printcompilation <pid>:当前VM执行的信息。

Compiled 编译任务的数目 

Size 方法生成的字节码的大小 

Type 编译类型 

Method 类名和方法名用来标识编译的方法。类名使用/做为一个命名空间分隔符。方法名是给定类中的方法。上述格式是由-XX:+PrintComplation选项进行设置的


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/329914.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

修改打印机ip工具_使用富士施乐一体机因动态IP导致不能打印与扫描的解决方法...

背景在使用富士施乐的一体机中(其他厂商的一体机 也类似)&#xff0c;很多人的网络环境是动态IP的&#xff0c;即打印的IP地址是不固定的&#xff0c;随着每次开机或关机会变化&#xff0c;从而经常有人反应打印机不能打印或者扫描了。。总体思路1. 检查当前的IP设置2. 把相应的…

springboot2.5.5配置mybatis

【README】 1.本文记录了 springboot2.5.5 配置 mybatis的步骤&#xff1b; 2.配置mybatis 分为注解和配置两种方式&#xff1b; 3.引入mybatis&#xff0c;包括了 创建springbt项目&#xff1b;druid数据源配置&#xff1b;数据库表与javabean&#xff1b;mybatis配置与sq…

Java命令学习系列(三)——Jmap

转载自 Java命令学习系列&#xff08;三&#xff09;——Jmapjmap是JDK自带的工具软件&#xff0c;主要用于打印指定Java进程(或核心文件、远程调试服务器)的共享对象内存映射或堆内存细节。可以使用jmap生成Heap Dump。在Java命令学习系列&#xff08;零&#xff09;——常见命…

skimage直方图如何保存_LightGBM的参数详解以及如何调优

lightGBM可以用来解决大多数表格数据问题的算法。有很多很棒的功能&#xff0c;并且在kaggle这种该数据比赛中会经常使用。但我一直对了解哪些参数对性能的影响最大以及我应该如何调优lightGBM参数以最大限度地利用它很感兴趣。我想我应该做一些研究&#xff0c;了解更多关于li…

基于springboot2.5.5自建启动器starter制品库

【README】 本文po出了自建springboot 启动器步骤&#xff1b; 【1】新建2个starter相关组件 根据 mybatis-spring-boot-starter&#xff0c;我们看到 自建starter需要两个组件&#xff0c;分别是 xxx-spring-boot-starter&#xff0c; xxx-spring-boot-starter-autoconfigu…

Java命令学习系列(二)——Jstack

转载自 Java命令学习系列&#xff08;二&#xff09;——Jstackjstack是java虚拟机自带的一种堆栈跟踪工具。功能 jstack用于生成java虚拟机当前时刻的线程快照。线程快照是当前java虚拟机内每一条线程正在执行的方法堆栈的集合&#xff0c;生成线程快照的主要目的是定位线程出…

python中ls是什么_使用Python代码实现Linux中的ls遍历目录命令的实例代码

一、写在前面 前几天在微信上看到这样一篇文章&#xff0c;链接为&#xff1a;https://www.jb51.net/it/692145.html&#xff0c;在这篇文章中&#xff0c;有这样一段话&#xff0c;吸引了我的注意&#xff1a;在 Linux 中 ls 是一个使用频率非常高的命令了&#xff0c;可选的参…

spring中stereotype注解Component,Repository,Service,Controller

【README】 本文介绍了 spring4.0 下 org.springframework.stereotype 的注解类型&#xff0c;俗称刻板型注解&#xff08;一成不变型&#xff09;&#xff1b; 包括 Component&#xff0c; Repository&#xff0c;Service&#xff0c; Controller &#xff1b; 目录 【REA…

[中级]Java命令学习系列(五)——jhat

转载自 [中级]Java命令学习系列&#xff08;五&#xff09;——jhatjhat(Java Heap Analysis Tool),是一个用来分析java的堆情况的命令。之前的文章讲到过&#xff0c;使用jmap可以生成Java堆的Dump文件。生成dump文件之后就可以用jhat命令&#xff0c;将dump文件转成html的形式…

转:IDEA 创建类注释模板和方法注释模板

转自&#xff1a; IDEA 创建类注释模板和方法注释模板 - 简书  在使用Idea的时候&#xff0c;它的注释模板很简单&#xff0c;不够详细&#xff1b;所有大多数开发者都想设置一个比较详细的注释模板&#xff0c;我现在把我了解的创建类注释模板和方法注释模板的操作记录下来…

mappedbytebuffer_Java NIO Buffer【MappedByteBuffer】概述与FileChannel的联系

“ NIO【Non-blocking IO非阻塞式IO】&#xff0c;可以让你非阻塞的使用IO&#xff0c;例如&#xff1a;当线程从通道读取数据到缓冲区时&#xff0c;线程还是可以进行其他事情。当数据被写入到缓冲区时&#xff0c;线程可以继续处理它。从缓冲区写入通道也类似&#xff0c;主要…

[初级]Java命令学习系列(六)——jinfo

转载自 [初级]Java命令学习系列&#xff08;六&#xff09;——jinfojinfo可以输出java进程、core文件或远程debug服务器的配置信息。这些配置信息包括JAVA系统参数及命令行参数,如果进程运行在64位虚拟机上&#xff0c;需要指明-J-d64参数&#xff0c;如&#xff1a;jinfo -J-…

idea 调整代码格式

1. 格式化代码时&#xff0c; 不想格式化注释&#xff0c; refer2 IDEA格式化代码时&#xff0c;不想格式化注释怎么办&#xff1f;_缘自天方的博客-CSDN博客_idea不格式化注释很简单&#xff0c;只需要把 Enable JavaDoc formatting 去掉选中状态即可。附图如下&#xff1a;h…

python递归算法_python递归算法(上)

什么是递归 在函数内部&#xff0c;是可以调用其他函数的。如果一个函数在内部调用自身&#xff0c;就称这个函数就是递归函数。举个例子&#xff1a; 实现一个可以自定义重复打印你好的函数。 要实现重复打印&#xff0c;可能我们立马就会想到使用循环。如果要求不能使用循环呢…

[初级]Java命令学习系列(七)——javap

转载自 [初级]Java命令学习系列&#xff08;七&#xff09;——javapjavap是jdk自带的一个工具&#xff0c;可以对代码反编译&#xff0c;也可以查看java编译器生成的字节码。一般情况下&#xff0c;很少有人使用javap对class文件进行反编译&#xff0c;因为有很多成熟的反编译…

局域网物理机怎么访问虚拟机

前言 友链: 原文地址 ❓-背景- 现有物理机A&#xff0c;B。A中安装了虚拟机VM上面部署了服务&#xff08;这里以mysql为例&#xff09;。B需要访问A虚拟机中部署的服务。 -环境- 物理机A&#xff08;192.168.135.161&#xff09;物理机B&#xff08;192.168.135.162&#xf…

springmvc新建拦截器

【1】web.xml中配置springmvc的配置文件路径 <!-- 配置 DispatcherServlet --><servlet><servlet-name>springDispatcherServlet</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><!…

householder变换qr分解matlab_【基础教程】Matlab实现傅里叶变换

傅立叶变换傅立叶变换是一种常见的分析方法&#xff0c;傅立叶变换将满足一定条件的函数表示为一些函数的加权和(或者积分)。可以分为四个类别&#xff1a; 1. 非周期连续性信号 对应于傅里叶变换&#xff0c;频域连续非周期 2. 周期性连续性信号 对应于傅立叶级数&#xff0c;…

Java开发必会的Linux命令

转载自 Java开发必会的Linux命令 必会Linux命令清单查找文件 find / -name filename.txt 根据名称查找/目录下的filename.txt文件。 find . -name "*.xml" 递归查找所有的xml文件 find . -name "*" |xargs grep "hello" 递归查找所有文件内容中包…

http连接池

转自 &#xff1a; 最近学习了Http连接池 - 五月的仓颉 - 博客园 【1】使用线程池与否的程序性能 我的任务定义&#xff1a;从0 累加到 100w&#xff1b; public class ThreadPoolMain {/*** 线程池测试*/private static final AtomicInteger THREAD_EXECUTED_TOTAL new At…