歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> JDK自帶工具之jstat

JDK自帶工具之jstat

日期:2017/2/28 14:23:34   编辑:Linux教程

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的空間使用情況是在交替進行的。

--------------------------------------分割線 --------------------------------------

Ubuntu安裝JDK及環境變量配置 http://www.linuxidc.com/Linux/2013-01/78221.htm

Ubuntu下安裝JDK7(附Clojure下載) http://www.linuxidc.com/Linux/2012-10/71557.htm

Ubuntu 12.04下安裝JDK1.7 http://www.linuxidc.com/Linux/2012-06/62239.htm

CentOS6.3安裝JDK和環境配置 http://www.linuxidc.com/Linux/2012-09/70780.htm

Ubuntu14.04 64位 安裝JDK1.7 http://www.linuxidc.com/Linux/2015-01/111102.htm

Copyright © Linux教程網 All Rights Reserved