亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java中的jdk命令行工具有哪些

發布時間:2021-09-27 09:42:42 來源:億速云 閱讀:156 作者:柒染 欄目:編程語言

這期內容當中小編將會給大家帶來有關Java中的jdk命令行工具有哪些,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

1. 查看java進程—— jps 命令

jps 命令類似于linux下的ps命令,但它只用于列出java的進程。

首先使用ps命令看下java進程:

$ ps aux | grep java
root      5601  0.1 22.4 3715428 869352 ?      Sl   9月23  87:36 java -jar -Dspring.profiles.active=prod -Dserver.port=8080 -Dfile.encoding=UTF-8 -server -Xms1024m -Xmx1024m -Xmn512m -Xss512k -XX:+UseConcMarkSweepGC -XX:+DisableExplicitGC -verbose:gc -XX:+PrintGCDetails -XX:+DisableExplicitGC -Xloggc:/opt/app/ruoyi-admin/logs/gc.log -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/opt/app/ruoyi-admin/logs/dump.logs ruoyi-admin.jar
root     30418  0.0  0.0 112728   968 pts/0    S+   21:56   0:00 grep --color=auto java
1.1 jps 命令不加任何參數,可以列出java進程id及main函數名稱:
$ jps
5601 jar
30536 Jps
1.2 參數 -q 可以指定jps只輸出進程id:
$ jps -q
5601
30604
1.3 參數 -m 可以用于輸出傳遞給java進程(主函數)的參數
jps -m
5601 jar
30682 Jps -m
1.4 參數 -l 可以用于輸出主函數的完整路徑
$ jps -l
5601 ruoyi-admin.jar
30868 sun.tools.jps.Jps
1.5 參數 -v 可以顯示傳遞java虛擬機的參數
5601 jar -Dspring.profiles.active=prod -Dserver.port=8080 -Dfile.encoding=UTF-8 -Xms1024m -Xmx1024m -Xmn512m -Xss512k -XX:+UseConcMarkSweepGC -XX:+DisableExplicitGC -verbose:gc -XX:+PrintGCDetails -XX:+DisableExplicitGC -Xloggc:/opt/app/ruoyi-admin/logs/gc.log -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/opt/app/ruoyi-admin/logs/dump.logs
31035 Jps -Denv.class.path=.:/usr/local/java/jdk1.8.0_221/lib:/usr/local/java/jdk1.8.0_221/jre/lib -Dapplication.home=/usr/local/java/jdk1.8.0_221 -Xms8m

2. 查看虛擬機運行時信息—— jstat 命令

jstat 命令是一個可以用于觀察java應用程序運行時相關信息的工具,它的功能非常強大,可以通過它查看堆信息的詳細情況,基本語法如下:

jstat -<option> [-t] [-h<lines>] <vmid> [<interval> [<count>]]
  • option 可以由以下值構成:

    • class:顯示ClassLoad的相關信息;

    • compiler:顯示JIT編譯的相關信息;

    • gc:顯示和gc相關的堆信息;

    • gccapacity:顯示各個代的容量以及使用情況;

    • gccause:顯示垃圾回收的相關信息(通-gcutil, 同時顯示最后一次或當前正在發生的垃圾回收的誘因;

    • gcmetacapacity:顯示metaspace的大小

    • gcnew:顯示新生代信息;

    • gcnewcapacity:顯示新生代大小和使用情況;

    • gcold:顯示老年代和永久代的信息;

    • gcoldcapacity:顯示老年代的大小;

    • gcutil:顯示垃圾收集信息;

    • printcompilation:輸出JIT編譯的方法信息

  • -t 參數可以在輸出信息前加上一個Timestamp列,顯示程序的運行時間

  • -h 參數可以指定在周期性輸出時,輸出多少行數據后輸出一個表頭信息

  • interval 參數用于指定輸出統計數據的周期,單位為毫秒

  • count 參數用于指定一共輸出多少次數據。

例1:輸出進程的classLoader相關信息
$ jstat -class -t 5601 1000 2
Timestamp       Loaded  Bytes  Unloaded  Bytes     Time
      3127495.0  14324 27006.2        0     0.0       7.19
      3127496.2  14324 27006.2        0     0.0       7.19

-class的輸出中,

  • Loaded表示載入類的數量,

  • Bytes表示載入類的合計大小,

  • Unloaded表示卸載類的數量,

  • 第2個Bytes表示卸載類的大小,

  • Time表示在加載和卸載類上所花的時間。

例2:查看 JIT 編譯的信息
$ jstat -compiler -t 5601
Timestamp       Compiled Failed Invalid   Time   FailedType FailedMethod
      3127815.7    19402      0       0    65.39          0
  • Compiled:編譯任務執行的次數

  • Failed:編譯失敗的次數

  • Invalid:編譯不可用的次數

  • Time:編譯的總耗時

  • FailedType:最后一次編譯失敗的類型

  • FailedMethod:最后一次編譯失敗的類名和方法名

例3:顯示與gc相關的堆信息
$ jstat -gc 5601
 S0C    S1C    S0U    S1U      EC       EU        OC         OU       MC     MU    CCSC   CCSU   YGC     YGCT    FGC    FGCT     GCT
52416.0 52416.0 353.4   0.0   419456.0 56842.5   524288.0   64566.9   88160.0 84466.4 10452.0 9748.5    254    2.182   4      0.157    2.339
  • S0C:s0區的大小(KB)

  • S1C:s1區的大小(KB)

  • S0U:s0區的使用大小(KB)

  • S1U:s1區的使用大小(KB)

  • EC:eden區的大小(KB)

  • EU:eden區的使用大小(KB)

  • OC:老年代大小(KB)

  • OU:老年代使用大小(KB)

  • MC:元數據區(Metaspace)大小(KB)

  • MU:元數據區(Metaspace)使用大小(KB)

  • CCSC:壓縮類空間大小(KB)

  • CCSU:壓縮類空間使用大小(KB)

  • YGC:年輕代垃圾回收次數

  • YGCT:年輕代垃圾回收消耗時間

  • FGC:老年代垃圾回收次數

  • FGCT:老年代垃圾回收消耗時間

  • GCT:垃圾回收消耗總時間

例4:顯示與gc相關的堆信息,包含各代的最大值與最小值
$ jstat -gccapacity 5601
 NGCMN    NGCMX     NGC     S0C   S1C       EC      OGCMN      OGCMX       OGC         OC       MCMN     MCMX      MC     CCSMN    CCSMX     CCSC    YGC    FGC
524288.0 524288.0 524288.0 52416.0 52416.0 419456.0   524288.0   524288.0   524288.0   524288.0      0.0 1126400.0  88160.0      0.0 1048576.0  10452.0    254     4
  • NGCMN:新生代最小容量(KB)

  • NGCMX:新生代最大容量(KB)

  • NGC:當前新生代容量(KB)

  • S0C:第一個幸存區大小(KB)

  • S1C:第二個幸存區的大小(KB)

  • EC:伊甸園區的大小(KB)

  • OGCMN:老年代最小容量(KB)

  • OGCMX:老年代最大容量(KB)

  • OGC:當前老年代大小(KB)

  • OC:當前老年代大小(KB)

  • MCMN:最小元數據容量(KB)

  • MCMX:最大元數據容量(KB)

  • MC:當前元數據空間大小(KB)

  • CCSMN:最小壓縮類空間大小(KB)

  • CCSMX:最大壓縮類空間大小(KB)

  • CCSC:當前壓縮類空間大小(KB)

  • YGC:年輕代gc次數

  • FGC:老年代GC次數

說明:與 -gc 相比,-gccapacity 不僅輸出了各個代的當前大小,也包含了各個代的最大值和最小值

例5:顯示最近一次gc的原因以及當前gc的原因
$ jstat -gccause 5601
  S0     S1     E      O      M     CCS    YGC     YGCT    FGC    FGCT     GCT    LGCC                 GCC
  0.67   0.00  19.75  12.32  95.81  93.27    254    2.182     4    0.157    2.339 Allocation Failure   No GC
  • LGCC:上次gc的原因

  • GCC:當前gc的原因

本例中,最近一次gc是由于內存分配失敗引起的,當前時刻未進行gc.

例6:查看新生代的一些詳細信息
$ jstat -gcnew 5601
 S0C    S1C    S0U    S1U   TT MTT  DSS      EC       EU     YGC     YGCT
52416.0 52416.0  353.4    0.0  6   6 26208.0 419456.0 103801.7    254    2.182
  • TT:新生代對象晉升到老年代對象的年齡

  • MTT:新生代對象晉升到老年代對象的年齡最大值

  • DSS:所需的survivor區大小

例7:詳細輸出新生代各個區的大小信息
$ jstat -gcnewcapacity 5601
  NGCMN      NGCMX       NGC      S0CMX     S0C     S1CMX     S1C       ECMX        EC      YGC   FGC
  524288.0   524288.0   524288.0  52416.0  52416.0  52416.0  52416.0   419456.0   419456.0   254     4
  • NGCMN:新生代最小容量

  • NGCMX:新生代最大容量

  • NGC:當前新生代容量

  • S0CMX:s0區的最大值(KB)

  • S0C:當前s0區大小(KB)

  • S1CMX:s1區的最大值(KB)

  • S1C:當前s1區大小(KB)

  • ECMX:eden區最大值(KB)

  • EC:當前eden大小

  • YGC:年輕代垃圾回收次數

  • FGC:老年代回收次數

例8:輸出老年代gc的概況
$ jstat -gcold 5601
   MC       MU      CCSC     CCSU       OC          OU       YGC    FGC    FGCT     GCT
 88160.0  84466.4  10452.0   9748.5    524288.0     64566.9    254     4    0.157    2.339
例8:輸出老年代的容量信息
$ jstat -gcoldcapacity 5601
   OGCMN       OGCMX        OGC         OC       YGC   FGC    FGCT     GCT
   524288.0    524288.0    524288.0    524288.0   254     4    0.157    2.339
例9:輸出gc回收相關信息
$ jstat -gcutil 5601
  S0     S1     E      O      M     CCS    YGC     YGCT    FGC    FGCT     GCT
  0.67   0.00  53.27  12.32  95.81  93.27    254    2.182     4    0.157    2.339
  • S0:s0區當前使用比例

  • S1:s1區當前使用比例

  • E:eden區使用比例

  • O:老年代使用比例

  • M:元數據區使用比例

  • CCS:壓縮使用比例

  • YGC:年輕代垃圾回收次數

  • FGC:老年代垃圾回收次數

  • FGCT:老年代垃圾回收消耗時間

  • GCT:垃圾回收消耗總時間

例10:連續查看gc回收信息

jstat 結合 intervalcount 參數,可以持續觀察堆使用情況及gc信息,如:

# 間隔1000ms輸出gc回收信息,共輸出5次
jstat -gcutil 5601 1000 5
  S0     S1     E      O      M     CCS    YGC     YGCT    FGC    FGCT     GCT
  0.67   0.00  55.27  12.32  95.81  93.27    254    2.182     4    0.157    2.339
  0.67   0.00  55.27  12.32  95.81  93.27    254    2.182     4    0.157    2.339
  0.67   0.00  55.28  12.32  95.81  93.27    254    2.182     4    0.157    2.339
  0.67   0.00  55.28  12.32  95.81  93.27    254    2.182     4    0.157    2.339
  0.67   0.00  55.28  12.32  95.81  93.27    254    2.182     4    0.157    2.339

同樣地,上述其他示例也有類似的用法。

3. 查看虛擬機參數—— jinfo 命令

jinfo 命令可以用來查看正在運行的java應用程序的擴展參數,基本語法如下:

jinfo <option> <pid>

其中option可以為以下參數:

  • -flag<name>:打印指定java虛擬機的參數值

在很多情況下,java應用程序不會指定所有的java虛擬機參數。而此時,開發人員可能不知道某一個具體的java虛擬機參數的認。在這種情況下,可以使用 jinfo 命令,開發人員可以很方便地找到java虛擬機參數的當前值。

例:查看新生代對象晉升到老年代的最大年齡:
$ jinfo -flag MaxTenuringThreshold 5601
-XX:MaxTenuringThreshold=6

4. 導出堆到文件—— jmap 命令

jmap命令是一個多功能的命令,它可以生成java程序的堆dump文件,也可以查看堆內對象實例的統計信息、查看classLoader的信息以及finalizer隊列。

例1:生成對象的統計信息
$ jmap -histo 5601
num     #instances         #bytes  class name
----------------------------------------------
   1:        319862       32778488  [C
   2:         50830       19345024  [I
   3:        120919       10764840  [B
   4:        201841        8073640  java.util.TreeMap$Entry
   5:        253189        6076536  java.lang.String
   6:         46302        4074576  java.lang.reflect.Method
   7:         90594        2899008  java.util.concurrent.ConcurrentHashMap$Node
   8:         61733        2806752  [Ljava.lang.Object;
   9:         50356        2014240  java.util.LinkedHashMap$Entry
  10:         27163        1987056  [Ljava.util.HashMap$Node;
  11:         15304        1710560  java.lang.Class
  12:         40517        1296544  java.util.HashMap$Node
  13:         23026        1105248  org.aspectj.weaver.reflect.ShadowMatchImpl
  14:         19402        1086512  java.util.LinkedHashMap
  15:         20779         997392  java.util.HashMap
  16:         11205         986040  com.ruoyi.framework.shiro.session.OnlineSession
  17:         29536         945152  com.mysql.cj.util.LazyString
  18:          4046         938672  com.mysql.cj.jdbc.result.ResultSetImpl
  19:         39886         893584  [Ljava.lang.Class;
  20:         11264         811008  net.sf.ehcache.Element
  21:         15705         753840  java.nio.HeapByteBuffer
··· 省略其他輸出

注:-histo 輸出內容較多,建議將內容輸出到文件中。

例2:導出java程序的當前堆快照
$ jmap -dump:format=b,file=/home/www/heap.dump 5601
Dumping heap to /home/www/heap.dump ...
Heap dump file created

導出堆文件后,可以使用Visual VMMAT等工具分析。

例3:查看系統的ClassLoader信息
jmap -clstats 5601
Attaching to process ID 5601, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 25.221-b11
finding class loader instances ..
done.
computing per loader stat ..done.
please wait.. computing liveness.liveness analysis may be inaccurate ...
class_loader	classes	bytes	parent_loader	alive?	type

<bootstrap>	3538	6193214	  null  	live	<internal>
0x00000000e3ba0bb8	1	880	0x00000000e0020830	dead	sun/reflect/DelegatingClassLoader@0x000000010000a0a0
0x00000000e3d273d0	1	1474	0x00000000e0020830	dead	sun/reflect/DelegatingClassLoader@0x000000010000a0a0
0x00000000e15b3158	1	1473	  null  	dead	sun/reflect/DelegatingClassLoader@0x000000010000a0a0
0x00000000e3062f00	1	880	0x00000000e0020830	dead	sun/reflect/DelegatingClassLoader@0x000000010000a0a0
0x00000000e35eff58	1	1471	0x00000000e0020830	dead	sun/reflect/DelegatingClassLoader@0x000000010000a0a0
0x00000000e068b460	1	1473	0x00000000e0020830	dead	sun/reflect/DelegatingClassLoader@0x000000010000a0a0
0x00000000e2e04ee8	1	1473	0x00000000e0020830	dead	sun/reflect/DelegatingClassLoader@0x000000010000a0a0
0x00000000e339ef30	1	880	0x00000000e0020830	dead	sun/reflect/DelegatingClassLoader@0x000000010000a0a0
0x00000000e33a1330	1	1473	0x00000000e0020830	dead	sun/reflect/DelegatingClassLoader@0x000000010000a0a0
0x00000000e3575358	1	1471	  null  	dead	sun/reflect/DelegatingClassLoader@0x000000010000a0a0
···省略其他輸出

total = 569	13668	22579616	    N/A    	alive=1, dead=568	    N/A
例4:查看系統的finalizer隊列中的對象:
$ jmap -finalizerinfo 5601
Attaching to process ID 5601, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 25.221-b11
Number of objects pending for finalization: 0

5. 查看線程堆棧——jstack命令

jstack命令用于導出java應用程序的線程堆棧,語法為:

jstack [-l] <pid>
  • -l 用于打印鎖的附加信息。

jstack命令會在控制臺輸出程序中的所有的鎖信息,可以使用重定向將輸出內容保存到文件中,如:

jstack -l 5601 > ./thread.log

6. 多功能命令行 jcmd 命令

在jdk1.7后,新增了一個命令行工具 jcmd。它是一個多功能的工具,可以用來導出堆、查看java進程、導出線程信息、執行GC等。

例1:列出所有的java進程
$ jcmd -l
5601 ruoyi-admin.jar
1852 sun.tools.jcmd.JCmd -l
例2:查看虛擬機運行時長 VM.uptime
jcmd 5601 VM.uptime
5601:
3301407.004 s
例3:打印線程棧信息(同jstack
$ jcmd 5601 Thread.print
5601:
2019-10-31 22:17:31
Full thread dump Java HotSpot(TM) 64-Bit Server VM (25.221-b11 mixed mode):

"Attach Listener" #167 daemon prio=9 os_prio=0 tid=0x00007fcc1001b000 nid=0x5ea0 waiting on condition [0x0000000000000000]
   java.lang.Thread.State: RUNNABLE
... 省略其他輸出
例4:查看系統中類的統計信息
jcmd 5601 GC.class_histogram
5601:

 num     #instances         #bytes  class name
----------------------------------------------
   1:        128273       14782000  [C
   2:         34256        3014528  java.lang.reflect.Method
   3:        122377        2937048  java.lang.String
   4:         88955        2846560  java.util.concurrent.ConcurrentHashMap$Node
   5:          7481        2524736  [B
   6:         15102        1689552  java.lang.Class
   7:         34360        1374400  java.util.LinkedHashMap$Entry
... 省略其他輸出
例5:導出堆信息
$ jcmd 5601 GC.heap_dump ~/dump.log
5601:
Heap dump file created

GC.heap_dump 接收一個參數作為堆Dump文件的輸出路徑,得到堆文件后,可以使用MAT或VisualVm等工具進行分析。

例6:獲取系統的properties內容
$ jcmd 5601 VM.system_properties
5601:
#Thu Oct 31 22:25:10 CST 2019
java.runtime.name=Java(TM) SE Runtime Environment
java.protocol.handler.pkgs=org.springframework.boot.loader
sun.boot.library.path=/usr/local/java/jdk1.8.0_221/jre/lib/amd64
java.vm.version=25.221-b11
java.vm.vendor=Oracle Corporation
java.vendor.url=http\://java.oracle.com/
... 省略其他輸出
例7:獲得啟動參數
$ jcmd 5601 VM.flags
5601:
-XX:CICompilerCount=2 -XX:+DisableExplicitGC -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/opt/app/ruoyi-admin/logs/dump.logs -XX:InitialHeapSize=1073741824 -XX:MaxHeapSize=1073741824 -XX:MaxNewSize=536870912 -XX:MaxTenuringThreshold=6 -XX:MinHeapDeltaBytes=196608 -XX:NewSize=536870912 -XX:OldPLABSize=16 -XX:OldSize=536870912 -XX:+PrintGC -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:ThreadStackSize=512 -XX:+UseCompressedClassPointers -XX:+UseCompressedOops -XX:+UseConcMarkSweepGC -XX:+UseParNewGC
例8:獲得所有性能統計相關數據
$ jcmd 5601 PerfCounter.print
5601:
java.ci.totalTime=66922617199
java.cls.loadedClasses=14326
java.cls.sharedLoadedClasses=0
java.cls.sharedUnloadedClasses=0
java.cls.unloadedClasses=203
java.property.java.class.path="ruoyi-admin.jar"
java.property.java.endorsed.dirs="/usr/local/java/jdk1.8.0_221/jre/lib/endorsed"
java.property.java.ext.dirs="/usr/local/java/jdk1.8.0_221/jre/lib/ext:/usr/java/packages/lib/ext"
java.property.java.home="/usr/local/java/jdk1.8.0_221/jre"
java.property.java.library.path="/usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib"
java.property.java.version="1.8.0_221"
... 省略其他輸出

在這個輸出中,可以找到所有的性能統計相關的數據,如活動的線程數、活動線程峰值等信息。


上述就是小編為大家分享的Java中的jdk命令行工具有哪些了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

务川| 三穗县| 岳普湖县| 长沙市| 大名县| 鄂尔多斯市| 湘潭县| 雷州市| 唐河县| 延庆县| 黔南| 孙吴县| 岳阳县| 台北县| 锦州市| 潜江市| 尖扎县| 浙江省| 陆丰市| 宜城市| 阆中市| 革吉县| 阿瓦提县| 蒙城县| 大连市| 南汇区| 宁海县| 昌黎县| 香河县| 镇远县| 公安县| 浑源县| 石渠县| 福建省| 比如县| 华宁县| 莆田市| 聂拉木县| 图们市| 融水| 辽宁省|