jdk工具簡單學習

 

一、jps

1.概念

jps(Java Virtual Machine Process Status Tool)是JDK 1.5提供的一個顯示當前所有java進程pid的命令,簡單實用,非常適合在linux/unix平臺上簡單察看當前java進程的一些簡單情況。

jps的作用是顯示當前系統的java進程情況,及其id號;我們可以通過它來查看我們到底啓動了幾個java進程(因爲每一個java程序都會獨佔一個java虛擬機實例),和他們的進程號(爲下面幾個程序做準備)。

**使用方法:**在當前命令行下打 jps(需要JAVA_HOME,沒有的話,到改程序的目錄下打) 。
                   jps存放在JAVA_HOME/bin/jps,使用時爲了方便請將JAVA_HOME/bin/加入到Path。

注意事項:jps命令有個地方很不好,似乎只能顯示當前用戶的java進程,要顯示其他用戶的還是隻能用unix/linux的ps命令

2.舉例

[root@VM_0_14_centos ~]# jps
28000 Jps
3607 start.jar


比較常用的參數:
-q 只顯示pid,不顯示class名稱,jar文件名和傳遞給main 方法的參數
LiWeideMacBook-Pro:~ liweihan$ jps -q
8160
9859
9860
9861
29750
8538


-m 輸出傳遞給main 方法的參數,在嵌入式jvm上可能是null
[root@VM_0_14_centos ~]# jps -m
3607 start.jar jetty.state=/usr/local/jetty/jetty.state jetty-logging.xml jetty-started.xml
29503 Jps -m



-l 輸出應用程序main class的完整package名 或者 應用程序的jar文件完整路徑名
[root@VM_0_14_centos ~]# jps -l
29826 sun.tools.jps.Jps
3607 /usr/local/jetty/start.jar



-v 輸出傳遞給JVM的參數
[root@VM_0_14_centos ~]# jps -v
3607 start.jar -Xms256m -Xmx256m -Djetty.logging.dir=/usr/local/jetty/logs -Djetty.home=/usr/local/jetty -Djetty.base=/usr/local/jetty -Djava.io.tmpdir=/tmp
29900 Jps -Dapplication.home=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.161-0.b14.el7_4.x86_64 -Xms8m

3.總結

我們常用 jps -l 命令。

二、jstat

1.概念

Jstat用於監控基於HotSpot的JVM,對其堆的使用情況進行實時的命令行的統計,使用jstat我們可以對指定的JVM做如下監控:

- 類的加載及卸載情況

- 查看新生代、老生代及持久代的容量及使用情況

- 查看新生代、老生代及持久代的垃圾收集情況,包括垃圾回收的次數及垃圾回收所佔用的時間

- 查看新生代中Eden區及Survior區中容量及分配情況等

jstat工具特別強大,它有衆多的可選項,通過提供多種不同的監控維度,使我們可以從不同的維度來了解到當前JVM堆的使用情況。詳細查看堆內各個部分的使用量,使用的時候必須加上待統計的Java進程號,可選的不同維度參數以及可選的統計頻率參數。

2.舉例

《1.》類加載情況的統計

                jstat -class  pid

列名 說明
Loaded 加載了的類的數量
Bytes 加載了的類的大小,單爲Kb
Unloaded 卸載了的類的數量
Bytes 卸載了的類的大小,單爲Kb
Time 花在類的加載及卸載的時間
獲取pid:3607
[root@VM_0_14_centos ~]# jps -l
31510 sun.tools.jps.Jps
3607 /usr/local/jetty/start.jar

類加載情況統計
[root@VM_0_14_centos ~]# jstat -class 3607
 Loaded  Bytes        Unloaded    Bytes      Time   
  8426   18562.5       40         86.4       8.42

《2.》編譯器編譯情況的統計 

        jstat -compiler  pid

列名 說明
Compiled 編譯任務執行的次數
Failed 編譯任務執行失敗的次數
Invalid 編譯任務非法執行的次數
Time 執行編譯花費的時間
FailedType 最後一次編譯失敗的編譯類型
FailedMethod 最後一次編譯失敗的類名及方法名
[root@VM_0_14_centos ~]# jstat -compiler 3607
Compiled    Failed    Invalid     Time   FailedType                  FailedMethod
   19872      2        0         168.94   1 org/eclipse/jdt/internal/compiler/lookup/ReferenceBinding computeId

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章