JDK自带工具之jstat

Jstat是JDK自带的一个轻量级小工具。全称“Java Virtual Machine
statistics monitoring tool”。

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

Jstat可以用来监视VM内存内的各种堆和非堆的大小及其内存使用量。

1、Jstat命令格式

jstat [optionsvmid [interval[s|ms]  [count]]]

2、常用参数

1. options是用户希望查询的虚拟机种类

jstat -classpid:显示加载class的数量,及所占空间等信息。

jstat -compiler pid:显示VM实时编译的数量等信息。

jstat -gc pid:可以显示gc的信息,查看gc的次数,及时间。其中最后五项,分别是young gc的次数,young gc的时间,full gc的次数,full gc的时间,gc的总时间。

jstat -gccapacity:可以显示,VM内存中三代(young,old,perm)对象的使用和占用大小,如:PGCMN显示的是最小perm的内存使用量,PGCMX显示的是perm的内存最大使用量,PGC是当前新生成的perm内存占用量,PC是但前perm内存占用量。其他的可以根据这个类推, OC是old内纯的占用量。

jstat -gcnew pid:new对象的信息。

jstat -gcnewcapacity pid:new对象的信息及其占用量。

jstat -gcold pid:old对象的信息。

jstat -gcoldcapacity pid:old对象的信息及其占用量。

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

jstat -util pid:统计gc信息统计。

jstat -printcompilation pid:当前VM执行的信息。

2.vmid 虚拟机标识符,格式为:[protocol :][//]lvmid [@hostname [:port ]/servername ]

3.interval 是显示间隔

4.count 是显示次数

3、源代码

package com.jdkTools;

import java.util.ArrayList;

import java.util.Random;

/**

* 简单的应用,有大量的循环和创建对象,供测试JDK自带的jstat使用

* 参数:-Xms30m -Xmx60m

*

* @author 范芳铭

*/

public classEasyJstat {

public byte[]placeHolder = new byte[1 * 1024]; // 占位符

public static void main(String[] args) throws Exception {

while (true) {

Randomrandom = new Random();

int loops = random.nextInt(10000);

EasyJstatjstat = new EasyJstat();

System.out.println("......正在构建对象:" + loops + "(个)");

jstat.getLoop(loops);//多次循环,产生大量对象

Thread.sleep(10);

}

}

public voidgetLoop(int size) {

ArrayList<EasyJstat>list = newArrayList<EasyJstat>();

for (int i = 0; i < size; i++) {

EasyJstatjstat = new EasyJstat();

list.add(jstat);

}

}

}

4、运行参数

* 参数:-Xms30m -Xmx60m 
,本参数用于启动JVM虚拟机

5、运行结果

C:\Program Files\Java\jdk1.6.0_25\bin>jps -v

7588 Jps -Dapplication.home=C:\ProgramFiles\Java\jdk1.6.0_25 -Xms8m

2856  -Xms256m-Xmx768m -XX:MaxPermSize=256m -XX:ReservedCodeCacheSize=64m-Dosgi.nls.warnings=ignore

7672 EasyJstat -Xms30m -Xmx60m -Dfile.encoding=GBK

C:\Program Files\Java\jdk1.6.0_25\bin>jstat -gc 7672250 6

S0C    S1C    S0U   S1U      EC       EU       OC         OU

192.0  192.0   0.0  191.2   2048.0    0.0    28416.0    25772.5

192.0  192.0  191.2  0.0    2048.0    0.0    28416.0    19050.2

192.0  192.0   0.0  191.2   2048.0    0.0    28416.0    22142.5

192.0  192.0   0.0  191.9   2048.0    0.0    28416.0    26059.4

192.0  192.0   0.0   0.0    2048.0    0.0    28416.0     6885.8

192.0  192.0   0.0  191.7   2048.0    0.0    28416.0     6967.4

其中,S0C表示当前S0的容量 (KB),S1C表示当前S1的容量 (KB),EC表示当前eden的容量(KB)以此类推。

我们知道,两个Survivor区的数据是进行交换标记的,在这里能够很明显看出,S0U和S1U的空间使用情况是在交替进行的。

参考:

http://docs.oracle.com/javase/1.5.0/docs/tooldocs/share/jstat.html

http://blog.csdn.net/gtuu0123/article/details/6125919

时间: 2024-10-11 04:15:34

JDK自带工具之jstat的相关文章

JDK自带工具之jmap

Jmap是JDK自带的一个轻量级小工具.位于java的bin目录下,它能够打印出某个java进程(使用pid)内存中所有'对象'的情况(如:产生那些对象,及其数量).它不仅可以输出所有内存中对象的工具,甚至可以将VM 中的heap,以二进制输出成文本.使用方法 jmap -histo pid.也可以将其保存到文本中去,在一段时间后,使用文本对比工具,可以对比出GC回收了哪些对象.还可以和jhat (Java Heap Analysis Tool)一起使用,能够以图像的形式直观的展示当前内存是否有

JDK自带工具之jhat

Jhat是JDK自带的一个轻量级小工具.jhat位于java的bin目录下,是用来分析java堆的命令,可以将堆中的对象以html的形式显示出来,包括对象的数量,大小等等,并支持对象查询语言,jhat工具一般和jmap工具配合使用. 1.Jstat命令格式 Jhat dumpFile 2.使用步骤 第一步:导出堆 第二步:分析堆文件 第三步:查看html 有时dump出来的堆很大,在启动时会报堆空间不足的错误,可以使用如下参数: jhat -J-Xmx512m <heap dump file>

JDK自带工具之jstack

jstack是java虚拟机自带的一种堆栈跟踪工具.jstack位于java的bin目录下,主要利用JVM内建的指令对Java应用程序的资源和性能进行实时的命令行的监控,包括了对Heap size和垃圾回收状况的监控. Jstat可以用来监视VM内存内的各种堆和非堆的大小及其内存使用量. 1.Jstack命令格式 jstack [ option ] pid 2.常用参数 -F当'jstack [-l] pid'没有相应的时候强制打印栈信息 -l长列表. 打印关于锁的附加信息,例如属于java.u

JDK自带工具之jinfo

Jinfo是JDK自带Java配置信息工具.位于java的bin目录下,jinfo的作用是实时地查看和调整虚拟机的各项参数,虽然使用Jps命令的-v参数可以查看虚拟机启动时显示指定的参数列表.但是如果想要知道没有被明确指出的系统默认值,就需要用到jinfo. Jinfo还能够修改一部分运行期间能够调整的虚拟机参数. 1.Jinfo命令格式 jinfo [ option ] pid 2.常用参数 Usage: jinfo <option> <pid> (to connect to a

JDK 自带工具试用(一)

简述: 运维监控会用到JDK的小工具 说明: 1. jps 用来查看当前运行的Java进程 我在eclipse中起了一个web 应用 或者用jps -l 可以查看的更清楚一点 jps -v 看到10376之后用taskkill指令关闭 2. jstat 虚拟机统计信息监视工具 先用jps查看当前启动的应用 于是使用 [plain] view plaincopy cd C:\Users\Administrator\Desktop\jvm monitor gcutil 监视Java堆状况,主要关注已

JDK自带工具之JPS

jps(Java Virtual Machine Process Status Tool)是JDK提供的一个显示当前所有java进程pid的命令,简单实用,非常适合在linux/unix/windows平台上简单察看当前java进程的一些简单情况. jps它的作用是显示当前JAVA进程的id号,并可通过opt来查看这些进程的详细启动参数. jps位于jdk的bin目录下. 1.JPS命令格式 jps [ options ] [ hostid ]  2.常用参数 -q 只显示pid,不显示clas

如何使用JDK自带工具JConsole

前言 jconsole.exe为jdk自带的监控工具,操作简便,比较容易上手.jconsole可以实时的监控Java程序在运行过程中的内存,cpu,线程的使用情况,并可以对加载的相关类进行分析.下面开始一起看看如何使用jconsole吧! 打开jconsole步骤: 1.首先进入到jdk的安装目录bin目录下:双击"jconsole.exe"打开jconsole 双击jconsole打开,并进入管理控制页面,如果本地有正在运行的Java进程的话会自动检测出来:这里分为监控本地进程或远程

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.

JDK自带工具列表

JDK是一个功能强大的Java开发套装,它不仅仅为我们提供了Java运行环境,还给开发人员提供了许多有用的开发组件(位于bin目录中,如下图所示).仅仅使用JDK,就能够解决我们在Java开发过程中遇到的许多问题. 下图是JDK1.7版本下的工具列表:后续会针对每一个工具 下面,我们就按照工具文件名称的英文顺序来逐一介绍JDK内置的工具. 工具名称 描述 appletviewer.exe 用于运行并浏览applet小程序. apt.exe 注解处理工具(Annotation Processing