Jstat使用

/**
 * Jstate Example
 */
public class JstatMain {
    /**
     * S0 — Heap上的 Survivor space 0 区已使用空间的百分比
     * S1 — Heap上的 Survivor space 1 区已使用空间的百分比
     * E — Heap上的 Eden space 区已使用空间的百分比
     * O — Heap上的 Old space 区已使用空间的百分比
     * M — Metaspace区已使用空间的百分比
     * CCS-Compressed class space capacity (kB)
     * YGC — 从应用程序启动到采样时发生 Young GC 的次数
     * YGCT– 从应用程序启动到采样时 Young GC 所用的时间(单位秒)
     * FGC — 从应用程序启动到采样时发生 Full GC 的次数
     * FGCT-从应用程序启动到采样时 Full GC 所用的时间(单位秒)
     * GCT — 从应用程序启动到采样时用于垃圾回收的总时间(单位秒)
     */
    public static void main(String args[]) throws IOException {

        Map<String, Object> monitor = new HashMap<>();

        List<String> statColumn = Arrays.asList("S0", "S1", "E", "O", "M", "CCS", "YGC", "YGCT", "FGC", "FGCT", "GCT");

        String name = ManagementFactory.getRuntimeMXBean().getName();
        System.out.println(name);
        String pid = name.substring(0, name.indexOf("@"));
        Process process = Runtime.getRuntime().exec("jstat -gcutil " + pid + " 5000");

        //通过process拿到jstat命令的执行结果的输入流
        InputStreamReader isr = new InputStreamReader(process.getInputStream());
        BufferedReader bufferedReader = new BufferedReader(isr);

        String line = null;
        while ((line = bufferedReader.readLine()) != null) {
            String[] stats = line.trim().split("[ ]+");
            if (stats.length == statColumn.size()) {
                for (int i = 0; i < stats.length; i++) {
                    monitor.put(statColumn.get(i), stats[i]);
                    System.out.println(statColumn.get(i) + ":" + stats[i]);
                }
                System.out.println("=====");
            }
        }
    }
}

  

运行结果,
1142@Yale-Li
S0:S0
S1:S1
E:E
O:O
M:M
CCS:CCS
YGC:YGC
YGCT:YGCT
FGC:FGC
FGCT:FGCT
GCT:GCT
=====
S0:0.00
S1:0.00
E:16.01
O:0.00
M:17.19
CCS:19.74
YGC:0
YGCT:0.000
FGC:0
FGCT:0.000
GCT:0.000
=====
S0:0.00
S1:0.00
E:16.01
O:0.00
M:17.19
CCS:19.74
YGC:0
YGCT:0.000
FGC:0
FGCT:0.000
GCT:0.000
=====

=========END=========

时间: 2024-09-30 06:11:16

Jstat使用的相关文章

jstat

jstat查看JVM gc利用及回收情况 S0  - Heap上的 Survivor space 0 区已使用空间的百分比S1  - Heap上的 Survivor space 1 区已使用空间的百分比E   - Heap上的 Eden space 区已使用空间的百分比O   - Heap上的 Old space 区已使用空间的百分比P   - Perm space 区已使用空间的百分比YGC - 从应用程序启动到采样时发生 Young GC 的次数YGCT– 从应用程序启动到采样时 Young

jstat -gcutil

jstat -gcutil 9596 250 12 jstat -<option> [-t] [-h<lines>] <vmid> [<interval> [<count>]] 参数解释: Options - 选项,我们一般使用 -gcutil 查看gc情况 vmid    - VM的进程号,即当前运行的java进程号 interval– 间隔时间,单位为秒或者毫秒 count   - 打印次数,如果缺省则打印无数次 S0  - Heap上的 S

JVM性能调优监控工具jps、jstack、jmap、jhat、jstat、hprof使用详解

现实企业级Java开发中,有时候我们会碰到下面这些问题: OutOfMemoryError,内存不足 内存泄露 线程死锁 锁争用(Lock Contention) Java进程消耗CPU过高 ...... 这些问题在日常开发中可能被很多人忽视(比如有的人遇到上面的问题只是重启服务器或者调大内存,而不会深究问题根源),但能够理解并解决这些问题是Java程序员进阶的必备要求.本文将对一些常用的JVM性能调优监控工具进行介绍,希望能起抛砖引玉之用.本文参考了网上很多资料,难以一一列举,在此对这些资料的

转:jstat命令详解

Jstat是JDK自带的一个轻量级小工具.全称“Java Virtual Machine statistics monitoring tool”,它位于java的bin目录下,主要利用JVM内建的指令对Java应用程序的资源和性能进行实时的命令行的监控,包括了对Heap size和垃圾回收状况的监控.可见,Jstat是轻量级的.专门针对JVM的工具,非常适用. jstat工具特别强大,有众多的可选项,详细查看堆内各个部分的使用量,以及加载类的数量.使用时,需加上查看进程的进程id,和所选参数.参

java性能监控工具jstat

jstat Monitors Java Virtual Machine (JVM) statistics. This command is experimental and unsupported. Synopsis jstat [ generalOption | outputOptions vmid [ interval[s|ms] [ count ] ] generalOption A single general command-line option -help or -options.

jstat版本不兼容问题

一 问题描述 我使用jstat命令来监控Java应用,前端时间调试Logstash的时候,Logstash单独指定JDK1.8,但是服务器上其他Java应用还是使用的JDK1.7,监控脚本jstat_status.py指定的jstat还是1.7版本 http://john88wang.blog.51cto.com/2165294/1708302 Logstash的监控信息没有收集到,Zabbix server端有报错信息 12257:20160611:144426.851 error reaso

jstack(查看线程)、jmap(查看内存)和jstat(性能分析)命令

公司内部同事分享的一篇文章 周末看到一个用jstack查看死锁的例子.昨天晚上总结了一下jstack(查看线程).jmap(查看内存)和jstat(性能分析)命令.供大家参考 1.Jstack 1.1   jstack能得到运行java程序的java stack和native stack的信息.可以轻松得知当前线程的运行情况.如下图所示 注:这个和thread dump是同样的结果.但是thread dump是用kill -3 pid命令,还是服务器上面少用kill为妙 1.2   命名行格式

jvm监控工具jps,jstat,jstack,jmap的使用方法

在平常运维分析jvm的时候通常用到的工具的jps,jstat,jstack,jmap用于分析tomcat遇到的各种问题 tomcat常见的问题有: OOM,线程死锁(lock dead),锁争用(lock contention),Java消耗过多的CPU 可以通过以上工具进行分析 生产常用分析方法快速入口: #jps        --> 查看运行的java进程 #jstat -gc 进程pid --> 查看进程新生代老年代的内存使用情况,年轻代老年代垃圾收集次数及时间 #jstat -gcc

Linux使用jstat命令查看jvm的GC情况

Options,选项,我们一般使用 -gcutil 查看gc情况 vmid,VM的进程号,即当前运行的java进程号 interval,间隔时间,单位为秒或者毫秒 count,打印次数,如果缺省则打印无数次 通常运行命令如下: jstat -gc 12538 5000 即会每5秒一次显示进程号为12538的java进成的GC情况, 显示内容如下图: 说明 显示内容说明如下(部分结果是通过其他其他参数显示的,暂不说明): S0C:年轻代中第一个survivor(幸存区)的容量 (字节) S1C:年