java內建命令列工具(jcmd,jstack)

來源:互聯網
上載者:User

標籤:jstack   jcmd   

1.jcmd

1.1作用

發送診斷命令請求到正在啟動並執行Java虛擬機器(JVM)。

它必須和JVM運行在同一台機器上,並且與啟動JVM使用者具有相同的組許可權。
1.2文法

jcmd [-l|-h|-help]jcmd pid|main-class PerfCounter.printjcmd pid|main-class -f filenamejcmd pid|main-class command[ arguments]

Perfcounter.print:列印Java進程的效能計數器

-f filename:從中讀取診斷命令,每行命令必須在一行內寫完

command [arguments]:診斷指令

1.3命令列表

C:\Users\Administrator>jcmd 7048 help7048:The following commands are available:VM.native_memoryVM.commercial_featuresManagementAgent.stopManagementAgent.start_localManagementAgent.startThread.printGC.class_histogramGC.heap_dumpGC.run_finalizationGC.runVM.uptimeVM.flagsVM.system_propertiesVM.command_lineVM.version
#列印JDK及版本C:\Users\Administrator>jcmd 7048 VM.version7048:Java HotSpot(TM) 64-Bit Server VM version 24.75-b04JDK 7.0_75#列印虛擬機器系統屬性可以有幾百行的資訊顯示。C:\Users\Administrator>jcmd 7048  VM.system_properties7048:#Sat Apr 15 21:24:31 CST 2017java.runtime.name=Java(TM) SE Runtime Environmentsun.boot.library.path=D\:\\Java\\jdk1.7.0_75\\jre\\binjava.vm.version=24.75-b04shared.loader=java.vm.vendor=Oracle Corporationjava.vendor.url=http\://java.oracle.com/path.separator=;java.vm.name=Java HotSpot(TM) 64-Bit Server VMtomcat.util.buf.StringCache.byte.enabled=truefile.encoding.pkg=sun.io...#列印用於虛擬機器的所有標誌即使沒有設定,一些預設值將被列印出來C:\Users\Administrator>jcmd 7048 VM.flags7048:-XX:InitialHeapSize=132669696 -XX:MaxHeapSize=2124414976 -XX:+UseCompressedOops -XX:-UseLargePagesIndividualAllocation -XX:+UseParallelGC7048:[Global flags]    uintx AdaptivePermSizeWeight                    = 20              {product}               uintx AdaptiveSizeDecrementScaleFactor          = 4               {product}               uintx AdaptiveSizeMajorGCDecayTimeScale         = 10              {product}               uintx AdaptiveSizePausePolicy                   = 0               {product}               uintx AdaptiveSizePolicyCollectionCostMargin    = 50              {product}               uintx AdaptiveSizePolicyInitializingSteps       = 20              {product}               uintx AdaptiveSizePolicyOutputInterval          = 0               {product}               uintx AdaptiveSizePolicyWeight                  = 10              {product}               uintx AdaptiveSizeThroughPutPolicy              = 0               {product}               uintx AdaptiveTimeWeight                        = 25              {product}                bool AdjustConcurrency                         = false           {product}                bool AggressiveOpts                            = false           {product}                intx AliasLevel                                = 3               {C2 product}             bool AlignVector                               = true            {C2 product}      uintx InitialHeapSize                          := 132669696       {product}      ...     #冒號:表示非預設值      #列印(秒)正常已耗用時間     C:\Users\Administrator>jcmd 7048 VM.uptime        7048:        2213.664 s   #類長條圖        C:\Users\Administrator>jcmd 7048 GC.class_histogram   > 12333.txt       7048: num     #instances         #bytes  class name----------------------------------------------   1:         11678        8137440  [B   2:         30213        4300992  [C   3:         28188        3966976  <constMethodKlass>   4:         28188        3619568  <methodKlass>   5:          2339        2866712  <constantPoolKlass>   6:          2038        1698944  <constantPoolCacheKlass>   7:          2339        1659448  <instanceKlassKlass>   8:         28718         689232  java.lang.String   9:         16608         531456  java.util.HashMap$Entry  10:           736         416896  <methodDataKlass>  11:          6144         369080  [Ljava.lang.Object;  12:          2620         254960  java.lang.Class  13:           877         234768  [Ljava.util.HashMap$Entry;  14:          3569         229624  [S  15:          3773         214248  [[I....#建立堆轉儲(HPROF) C:\Users\Administrator>jcmd 7048 GC.heap_dump filename=Myheapdump7048:Heap dump file created    與jmap -dump:file=<file> <pid>功能一樣#建立一個堆長條圖 jcmd <process id/main class> GC.class_histogram filename=Myheaphistogram使用jmap -histo <pid> 列印線程的棧資訊C:\Users\Administrator>jcmd  7048 Thread.print7048:2017-04-15 21:43:28Full thread dump Java HotSpot(TM) 64-Bit Server VM (24.75-b04 mixed mode):"ajp-bio-8009-AsyncTimeout" daemon prio=6 tid=0x000000000d5bb000 nid=0x78c waiting on condition [0x000000000f16f000]   java.lang.Thread.State: TIMED_WAITING (sleeping)        at java.lang.Thread.sleep(Native Method)        at org.apache.tomcat.util.net.JIoEndpoint$AsyncTimeout.run(JIoEndpoint.java:152)        at java.lang.Thread.run(Thread.java:745)        .......


{product}
{C2 product}
{pd product}
{C1 product}
{manageable}:運行時動態更改
{C2 pd product}
{ARCH product}
{C1 pd product}
{lp64_product}
{product rw}

(2)jstack

2.1 作用

列印Java進程,核心檔案或者遠端偵錯伺服器的Java線程堆疊追蹤.

  • 死結監測和HANG

  • 使用jsadebugd 守護進程查詢遠程機器上的core檔案及進程

  • -l,可以列印java.util.concurrent.locks同步資訊和堆上的同步器,沒有該選項,僅僅是監視器的資訊。

  • jstack pid 與 ctrl+break

  • 也可以Thread.getAllStackTraces

2.2 文法

jstack [ options ] pidjstack [ options ] executable corejstack [ options ] [ [email protected] ] remote-hostname-or-IP

每一個棧幀,列印資訊包括類名,方法名,位元組碼索引(BCI),和行數。-m開關,同時列印本地和java棧幀資訊。

當指定的進程在一個64位Java虛擬機器上運行,則可能需要指定-J-d64選項,例如:jstack -J-d64 -m pid。

2.3 參數Options

-F:強制dump

-l:列印額外資訊

-m:列印混合堆棧資訊(c++,java)

http://docs.oracle.com/javase/8/docs/technotes/tools/unix/jstack.html

http://docs.oracle.com/javase/8/docs/technotes/guides/troubleshoot/tooldescr016.html

https://docs.oracle.com/javase/8/docs/technotes/guides/troubleshoot/tooldescr006.html

https://docs.oracle.com/javase/8/docs/technotes/tools/windows/jcmd.html

https://docs.oracle.com/javase/8/docs/technotes/guides/troubleshoot/tooldescr006.html

本文出自 “簡單” 部落格,請務必保留此出處http://dba10g.blog.51cto.com/764602/1916346

java內建命令列工具(jcmd,jstack)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.