java jstat m ccs_使用Java代码运行jstat命令并获取JVM运行信息

使用Java代码运行jstat命令并获取JVM运行信息

先来了解一下java.lang.management包的基本信息,提供管理接口,用于监视和管理 Java 虚拟机以及 Java 虚拟机在其上运行的操作系统。

下面代码就是使用了该软件包的类,获取当前运行的java程序的pid,然后运行jstat命令获取jvm的运行信息,

package com.usoft.sort;

import java.io.BufferedReader;

import java.io.IOException;

import java.io.InputStreamReader;

import java.lang.management.ManagementFactory;

import java.util.Arrays;

import java.util.HashMap;

import java.util.List;

import java.util.Map;

/**

* Created by xinxingegeya on 16/4/12.

*/

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 monitor = new HashMap<>();

List 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 

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=========

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值