深入理解java虚拟机---虚拟机工具jps与jstat(十四)

jps-java process status

jps类似于linux的ps命令,用于查看进程.

JPS 名称: jps - Java Virtual Machine Process Status Tool

命令用法: jps [options] [hostid]

options:命令选项,用来对输出格式进行控制

hostid:指定特定主机,可以是ip地址和域名, 也可以指定具体协议,端口。

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

功能描述: jps是用于查看有权访问的hotspot虚拟机的进程. 当未指定hostid时,默认查看本机jvm进程,否者查看指定的hostid机器上的jvm进程,此时hostid所指机器必须开启jstatd服务。 jps可以列出jvm进程lvmid,主类类名,main函数参数, jvm参数,jar名称等信息。

命令选项及功能:

没添加option的时候,默认列出VM标示符号和简单的class或jar名称.如下:

-p  :仅仅显示VM 标示,不显示jar,class, main参数等信息.

-m:输出主函数传入的参数. 下的hello 就是在执行程序时从命令行输入的参数

-l: 输出应用程序主类完整package名称或jar完整名称.

-v: 列出jvm参数, -Xms20m -Xmx50m是启动程序指定的jvm参数

-V: 输出通过.hotsportrc或-XX:Flags=<filename>指定的jvm参数

-Joption:传递参数到javac 调用的java lancher.

实例:

jstat

用以判断JVM是否存在内存问题呢?如何判断JVM垃圾回收是否正常?一般的top指令基本上满足不了这样的需求,因为它主要监控的是总体的系统资源,很难定位到java应用程序。

Jstat是JDK自带的一个轻量级小工具。全称“Java Virtual Machine statistics monitoring tool”,它位于java的bin目录下,主要利用JVM内建的指令对Java应用程序的资源和性能进行实时的命令行的监控,包括了对Heap size和垃圾回收状况的监控。可见,Jstat是轻量级的、专门针对JVM的工具,非常适用。由于JVM内存设置较大,图中百分比变化不太明显

一个极强的监视VM内存工具。可以用来监视VM内存内的各种堆和非堆的大小及其内存使用量。

jstat工具特别强大,有众多的可选项,详细查看堆内各个部分的使用量,以及加载类的数量。使用时,需加上查看进程的进程id,和所选参数。

执行:cd $JAVA_HOME/bin中执行jstat,注意jstat后一定要跟参数。

1.介绍

Jstat用于监控基于HotSpot的JVM,对其堆的使用情况进行实时的命令行的统计,使用jstat我们可以对指定的JVM做如下监控:

  • 类的加载及卸载情况
  • 查看新生代、老生代及metaSpace的容量及使用情况
  • 查看新生代、老生代及metaSpace的垃圾收集情况,包括垃圾回收的次数及垃圾回收所占用的时间
  • 查看新生代中Eden区及Survior区中容量及分配情况等

    jstat工具特别强大,它有众多的可选项,通过提供多种不同的监控维度,使我们可以从不同的维度来了解到当前JVM堆的使用情况。详细查看堆内各个部分的使用量,使用的时候必须加上待统计的Java进程号,可选的不同维度参数以及可选的统计频率参数。

  • 2.语法

    下面是jdk1.8支持的选项: 

    下面是jdk1.8以下版本支持的选项:

    3示例

    jstat  -gc -h5  -t 26316 1s 20
    
    • 1
    • 2

    -gc 选项 
    -h5 每隔5行显示一下表头 
    -t 显示从虚拟机启动在当前时间的时间间隔 单位:秒 
    26536 线程id 
    1s 1秒显示一次 
    20 总共显示20次

    4表头讲解

    实名jdk1.7与jdk1.8就差了一个metaspace区域,其它都一样。

    表头 描述 jdk 版本
    S0C 新生代中Survivor space中S0当前容量的大小(KB)  
    S1C 新生代中Survivor space中S1当前容量的大小(KB)  
    S0U 新生代中Survivor space中S0容量使用的大小(KB)  
    S1U 新生代中Survivor space中S1容量使用的大小(KB)  
    EC Eden space当前容量的大小(KB)  
    EU Eden space容量使用的大小(KB)  
    OC Old space当前容量的大小(KB)  
    OU Old space使用容量的大小(KB)  
    PC Permanent space当前容量的大小(KB) 1.8以下
    PU Permanent space使用容量的大小(KB) 1.8以下
    MC MeteSpace 当前容量的大小(KB) 1.8及以上
    MU MeteSpace 使用容量的大小(KB) 1.8及以上
    CCSC 压缩类空间大小(KB) 1.8及以上
    CCSU 压缩类空间大小(KB) 1.8及以上
    YGC 从应用程序启动到采样时发生 Young GC 的次数  
    YGCT 从应用程序启动到采样时 Young GC 所用的时间(秒)  
    FGC 从应用程序启动到采样时发生 Full GC 的次数  
    FGCT 从应用程序启动到采样时 Full GC 所用的时间(秒)  
    GCT 从jvm启动到采样时用于垃圾回收的总时间(单位秒),它的值等于YGC+FGC  

原文地址:https://www.cnblogs.com/zhulibin2012/p/8996185.html

时间: 2024-08-01 14:58:30

深入理解java虚拟机---虚拟机工具jps与jstat(十四)的相关文章

Java命令行实用工具jps和jstat

在Linux或其他UNIX和类UNIX环境下,ps命令想必大家都不陌生,我相信也有不少同学写过 ps aux | grep java | grep -v grep | awk '{print $2}' 这样的管道命令来找出Java进程的pid.常言道,Java并非真的"跨平台",它自己就是平台.作为平台,当然也有些基本的工具,让我们可以用更简单.更统一,同时又是非侵入的方式来查询进程相关信息.今天我们就来认识一下其中的两个. jps 顾名思义,它对应到UNIX的ps命令.用法如下: j

JDK自带VM分析工具jps,jstat,jmap,jconsole

一.概述 SUN 的JDK中的几个工具,非常好用.秉承着有免费,不用商用的原则.以下简单介绍一下这几种工具.(注:本文章下的所有工具都存在JDK5.0以上版本的工具集里,同javac一样,不须特意安装)  . jps 与unix上的ps类似,用来显示本地的java进程,可以查看本地运行着几个java程序,并显示他们的进程号. jstat 一个极强的监视VM内存工具.可以用来监视VM内存内的各种堆和非堆的大小及其内存使用量. jmap 打印出某个java进程(使用pid)内存内的,所有'对象'的情

java自带工具-jps、jinfo、jstack、jstat、jmap

掌握java自带的这些监控工具,有助与我们很好的分析问题和jvm性能调优秀.收集了些网上整理很好的文章. Java监控工具.调优.调试辅助函数 Java自带的GUI性能监控工具Jconsole以及JisualVM简介 JDK自带监控工具

JDK自带工具jps,jstat,jmap,jconsole使用

jps 与ps命令类似: ps -ef|grep java 用来显示本地的java进程,查看本地执行着几个java应用,并显示进程号. [[email protected] ~]# jps //仅仅显示进程号 23813 Jps 710 Bootstrap 792 Bootstrap [[email protected] ~]# jps -v //显示jvm參数 23852 Jps -Denv.class.path=.:/usr/jdk1.6.0_21/lib/dt.jar:/usr/jdk1.

《JAVA编程思想》学习笔记——第十四章 类型信息

运行时类型信息使得你可以在程序运行时发现和使用类型信息. 主要有两种方式:一种是"传统的"RTTI, 它假定我们在编译时已经知道了所有的类型;另一种是"反射"机制,它允许我们在运行时发现和使用类的信息. Class对象 类是程序的一部分,每个类都有一个Class对象.换言之,每当编写并且编译一个新类,就会产生一个Class对象(更恰当的说,是被保存在一个同名的.class文件中).为了生成这个类的对象,运行这个程序的Java虚拟机(JVM)将使用被称为"类

Java经典编程题50道之十四

输入某年某月某日,判断这一天是这一年的第几天? public class Example14 {    public static void main(String[] args) {        year(2017, 1, 1);    } public static void year(int year, int month, int day) {        int d = 0;        int days = 0;        if (year < 0 || month <

Java经典编程题50道之三十四

输入3个数a,b,c,按大小顺序输出. public class Example34 {    public static void main(String[] args) {        sort(5, 20, 15);    } public static void sort(int a, int b, int c) {        if (a < b) {            int t = a;            a = b;            b = t;        

Java经典编程题50道之四十四

求0~7所能组成的奇数个数.分析:组成1位数是4个,组成2位数是7*4个,组成3位数是7*8*4个,组成4位数是7*8*8*4个…… public class Example44 {    public static void main(String[] args) {        f();    } public static void f() {        int sum = 4;        int j;        System.out.println("组成1位数是 &quo

Java框架spring Boot学习笔记(十四):log4j介绍

功能 日志功能,通过log4j可以看到程序运行过程的详细信息. 使用 导入log4j的jar包 复制log4j的配置文件,复制到src下面   3.设置日志级别 info:看到基本信息 debug:看到更详细的信息