JDK內置工具命令

javap

Java反編譯工具,主要用於根據Java字節碼文件反彙編爲Java源代碼文件
用法:javap html

用法 描述
javap -help —help -? 輸出此用法消息
javap -version 版本消息
javap -v -verbose 輸出附加信息
javap -l 輸出行號和本地變量表
javap -public 僅顯示公共類和成員
javap -protected 顯示受保護的/公共類和成員
javap -package 顯示程序包/受保護的/公共類和成員 (默認)
javap -p -private 顯示全部類和成員
javap -c 對代碼進行反彙編
javap -s 輸出內部類型簽名
javap -sysinfo 顯示正在處理的類的系統信息 (路徑, 大小, 日期, MD5 散列)
javap -constants 顯示最終常量
javap -classpath 指定查找用戶類文件的位置
javap -cp 指定查找用戶類文件的位置
javap -bootclasspath 覆蓋引導類文件的位置

img

jps

jps(Java Virtual Machine Process Status Tool)顯示當前全部Java進程pid的命令
用法:jps [options] [hostid]vue

用法 描述
jps -q 僅輸出VM標識符
jps -m 輸出main method參數
jps -l 輸出徹底的包名,應用主類名,jar徹底路徑名
jps -v 輸出JVM參數
jps -V 輸出經過flag文件傳遞到JVM的參數
jps -Joption 傳遞參數到JVM,如:-J-Xms512m

img

jstat

jstat監視Java虛擬機統計信息
用法:jstat - [-t] [-h] [ []]java

用法 描述
jstat -gc pid 顯示gc的信息,查看gc的次數及時間
jstat -gccapacity pid 內存GC分區中各對象的使用和佔用大小
jstat -gcutil pid 統計gc信息彙總
jstat -gcnew pid 年輕代對象的信息
jstat -gcnewcapacity pid 年輕代對象的信息及其佔用量
jstat -gcold pid 老年代對象的信息
jstat -gcoldcapacity pid 老年代對象的信息及其佔用量
jstat -gcpermcapacity pid perm對象的信息及其佔用量
jstat -class pid 顯示加載class數量,及其所佔空間
jstat -compiler pid 顯示JVM實時編譯的數量等信息
jstat -printcompilation pid 打印當前JVM執行的信息

img

關於命令中表頭等信息的詳細解釋能夠參考 jstat命令手冊 c++

jcmd

jcmd工具能夠替代jps工具查看本地的JVM信息
用法: jcmd [pid | main-class] command…|PerfCounter.print| git

用法 描述
jcmd 查看本地的Java進程列表,獲取其pid
jcmd pid help 查看其支持的命令列表
jcmd pid Thread.print -l 打印線程棧
jcmd pid VM.command_line 打印啓動命令及參數
jcmd pid VM.system_properties 查看系統屬性內容
jcmd pid VM.uptime 查看虛擬機啓動時間
jcmd pid GC.heap_dump data/filename.dump 查看JVM的Heap Dump
jcmd pid GC.class_histogram 查看類的統計信息
jcmd pid PerfCounter.print 查看性能統計

img

jinfo

jinfo能夠查看運行中JVM的所有參數,還能夠設置部分參數
用法:github

  1. jinfo [option] pid
  2. jinfo [option] executable core
  3. jinfo [option] [server-id@]remote-hostname-or-ip
參數/option 描述說明
pid 對應JVM的進程id
excutable core 產生core dump文件
[server-id@]remote-hostname-or-ip 遠程的ip或hostname,server-id標記服務的惟一性id
no option 輸出所有的參數和系統屬性
-flag name 輸出對應名稱的參數
-flag [+/-]name 開啓/關閉對應名稱的參數
-flag name=value 設定對應名稱的參數
-flags 輸出所有的參數
-sysprops 輸出系統屬性

img

jhat

jhat即Java Heap Analyse Tool,是分析Java堆的命令,能夠將堆中的對象以html的形式顯示出來,支持對象查詢語言OQL
用法:jhat [-stack ] [-refs ] [-port ] [-baseline ] [-debug ] [-version] [-h/-help] 算法

用法參數 描述說明
-J 啓動JVM時傳入啓動參數,如:-J-XMx512m指定運行jhat的JVM使用的最大堆內存爲512m
-stack false/true 關閉對象分配調用棧跟蹤,默認爲true
-refs false/true 關閉對象引用跟蹤,默認爲true
-port port-number 設定jhat服務的端口號,默認爲7000
-exclude exclude-file 指定文件對象查詢時須要排除的數據成員列表,如:指定文件列出了java.lang.String.value,那麼當從某個特定對象計算可達對象列表時,引用路徑涉及java.lang.String.value的都會被排除
-baseline file 指定一個基準堆轉儲在兩個和heap dumps中有相同object id的對象會被標記爲不是新的,其餘對象被標記爲新的,在比較兩個不一樣的堆轉儲時頗有用
-debug int 設置debug級別,0表示不輸出調試信息,值越大表示輸出的debug信息越詳細
-version 啓動後只顯示版本信息就退出

img

jmap

jmap會打印Java進程內存中object的狀況,或者將JVM中的堆以二進制輸出成文本
用法:markdown

  1. jmap [option] pid
  2. jmap [option] executable core
  3. jamp [option] [server-id@] remote-hostname-or-ip
用法參數 描述說明
  無參,會打印目標JVM加載的每一個共享對象的起始地址,映射大小及映射文件的路徑
-dump:[live,] format=b, file= 使用hprof二進制輸出heap內容到文件,live表明只輸出存活對象
-finalizerinfo 打印正等候回收的對象的信息
-heap 打印heap的概要信息,GC使用的算法,heap的配置及wise heap的使用狀況
-histo[:live] 打印每一個class的內存信息,JVM的內部類會加上前綴「*」,live表明只輸出存活對象
-clstats 打印classloader和JVM heap方法區的信息,每一個classloader的名字,活潑性,地址,父classloader和加載的class數量(另外內部String數量和佔用內存數量也會打印出來)
-F 強迫,在pid沒有響應的時候使用-dump或者-histo參數,在這個模式下,live參數無效
-h/-help 打印輔助信息
-J 傳遞參數給jmap啓動的JVM

img

jstack

jstack是堆棧跟蹤工具,用於打印給定的Java進程id或core file或遠程調試服務的Java堆棧信息,若是在64位機器上,須要指定選項「-J-64」
用法:app

  1. jstack [option] pid
  2. jstack [option] executable core
  3. jsatck [option] [server-id@] remote-hostname-or-ip
參數/option 描述說明
pid 對應JVM的進程id
excutable core 產生core dump文件
[server-id@]remote-hostname-or-ip 遠程的ip或hostname,server-id標記服務的惟一性id
-F 強制打印棧信息
-l 長列表,打印關於鎖的附加信息
-m 打印Java和native c/c++框架的全部棧信息
-h/-help 打印輔助信息

img

jconsole

jconsole是JDK內置的圖形化Java性能分析工具,能夠在命令行運行。啓動能夠更具Java進程id查看程序的堆使用,線程狀況,類信息等。框架

img

jvisualvm

jvisualvm也是一個能夠圖形化Java性能分析的工具,在JDK6,JDK7,JDK8中存在,JDK9開始就被移除了,固然用戶能夠經過visualvm的官方網站本身下載。

img

相關文章
相關標籤/搜索