簡介
Jstat位於java的bin目錄下,主要利用JVM內建的指令對Java應用程式的資源和性能進行實時的命令行的監控,包括了對Heap size和垃圾回收狀況的監控。
Jstat可以用來監視VM記憶體內的各種堆和非堆的大小及其記憶體使用量。
jstat -class pid:顯示載入class的數量,及所占空間等信息。
jstat -compiler pid:顯示VM實時編譯的數量等信息。
jstat -gc pid:可以顯示gc的信息,查看gc的次數,及時間。其中最後五項,分別是young gc的次數,young gc的時間,full gc的次數,full gc的時間,gc的總時間。
Jstat命令格式
jstat [optionsvmid [interval[s|ms] [count]]]
原始碼
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);
}
}
}
運行參數
*參數:-Xms30m -Xmx60m,本參數用於啟動JVM虛擬機
運行結果
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 S0US1U EC EUOC OU
192.0 192.0 0.0191.2 2048.0 0.028416.0 25772.5
192.0 192.0 191.20.0 2048.0 0.028416.0 19050.2
192.0 192.0 0.0191.2 2048.0 0.028416.0 22142.5
192.0 192.0 0.0191.9 2048.0 0.028416.0 26059.4
192.0 192.0 0.00.0 2048.0 0.028416.0 6885.8
192.0 192.0 0.0191.7 2048.0 0.028416.0 6967.4
…
其中,S0C表示當前S0的容量 (KB),S1C表示當前S1的容量 (KB),EC表示當前eden的容量(KB)以此類推。