最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

深入淺析jcmd:JDK14中的調(diào)試神器

 更新時間:2020年04月29日 09:34:47   作者:flydean  
這篇文章主要介紹了jcmd:JDK14中的調(diào)試神器,本文給大家提到了jcmd的語法,通過實例列舉的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下

jcmd是JDK自帶的調(diào)試工具,具有非常強大的功能。jcmd是JDK7中正式引入的,有了jcmd,完全可以替換很多常用的其他工具,比如jstak和jmap。

jcmd可以將具體的診斷命令發(fā)送給JVM。為了安全起見,使用jcmd的用戶必須跟運行的java程序具有同樣的用戶和用戶組。

jcmd的調(diào)試命令有很多種,每一種調(diào)試命令又有自己的參數(shù)。

本文將會結(jié)合具體的例子詳細講解jcmd的使用。

jcmd的語法

jcmd的語法比較簡單:

jcmd [pid | main-class] command... | PerfCounter.print | -f filename

jcmd [-l]

jcmd -h

pid和main-class是二選一:

其中pid表示要發(fā)送診斷命令的java進程id。

也可以指定main-class,表示要發(fā)送診斷命令給運行該main-class的java進程。

command表示可以在jcmd中運行的命令,我們看下jcmd支持哪些命令:

./jcmd 93989 help
93989:
The following commands are available:
Compiler.CodeHeap_Analytics
Compiler.codecache
Compiler.codelist
Compiler.directives_add
Compiler.directives_clear
Compiler.directives_print
Compiler.directives_remove
Compiler.queue
GC.class_histogram
GC.class_stats
GC.finalizer_info
GC.heap_dump
GC.heap_info
GC.run
GC.run_finalization
JFR.check
JFR.configure
JFR.dump
JFR.start
JFR.stop
JVMTI.agent_load
JVMTI.data_dump
ManagementAgent.start
ManagementAgent.start_local
ManagementAgent.status
ManagementAgent.stop
Thread.print
VM.class_hierarchy
VM.classloader_stats
VM.classloaders
VM.command_line
VM.dynlibs
VM.events
VM.flags
VM.info
VM.log
VM.metaspace
VM.native_memory
VM.print_touched_methods
VM.set_flag
VM.stringtable
VM.symboltable
VM.system_properties
VM.systemdictionary
VM.uptime
VM.version
help

Perfcounter.print表示要打印java進程暴露的performance counters。

-f filename表示從文本文件中讀取要運行的命令。

-l 列出不是運行在docker中JVM。

-h 表示幫助。

下面我們舉幾個常用的例子

列出運行的JVM

./jcmd -l
98109 jdk.jcmd/sun.tools.jcmd.JCmd -l

通過使用jcmd -l可以列出所有正在運行的JVM進程。跟jps是一樣的。

打印stack信息

使用jcmd pid Thread.print -l可以打印出java程序的stack信息。其中-l表示輸出java.util.concurrent的lock信息。

下面看個簡單的例子:

./jcmd 93989 Thread.print -l

Full thread dump Java HotSpot(TM) 64-Bit Server VM (14.0.1+7 mixed mode, sharing):

Threads class SMR info:
_java_thread_list=0x00007fbeb1c4cb10, length=12, elements={
0x00007fbeb282a800, 0x00007fbeb282d800, 0x00007fbeb282e800, 0x00007fbeb2830800,
0x00007fbeb2831800, 0x00007fbeb2832000, 0x00007fbeb2833000, 0x00007fbeb3831000,
0x00007fbeb3822000, 0x00007fbeb3174000, 0x00007fbeb3815000, 0x00007fbeb226f800
}

"Reference Handler" #2 daemon prio=10 os_prio=31 cpu=0.64ms elapsed=8996.59s tid=0x00007fbeb282a800 nid=0x4703 waiting on condition [0x000070000440d000]
 java.lang.Thread.State: RUNNABLE
 at java.lang.ref.Reference.waitForReferencePendingList(java.base@14.0.1/Native Method)
 at java.lang.ref.Reference.processPendingReferences(java.base@14.0.1/Reference.java:241)
 at java.lang.ref.Reference$ReferenceHandler.run(java.base@14.0.1/Reference.java:213)

 Locked ownable synchronizers:
 - None

打印heap info

使用jcmd pid GC.heap_info可以獲得heap info。

./jcmd 93989 GC.heap_info
93989:
 garbage-first heap total 71680K, used 34410K [0x00000007d4400000, 0x0000000800000000)
 region size 1024K, 20 young (20480K), 4 survivors (4096K)
 Metaspace used 23810K, capacity 24246K, committed 24752K, reserved 1071104K
 class space used 2850K, capacity 3015K, committed 3072K, reserved 1048576K

打印heap dump

如果想知道heap里面到底有什么,則可以通過下面的命令將heap dump出來:

./jcmd 93989 GC.heap_dump heap_dump.out
93989:
Dumping heap to heap_dump.out ...
Heap dump file created [27727979 bytes in 0.643 secs]

heap dump需要傳入一個文件名,存放dump出來的信息。

統(tǒng)計heap使用情況

有時候我們需要統(tǒng)計一下heap中各個對象的使用情況,則可以下面方法:

./jcmd 93989 GC.class_histogram

93989:
 num #instances #bytes class name (module)
-------------------------------------------------------
 1: 25826 11748304 [B (java.base@14.0.1)
 2: 2233 1971800 [I (java.base@14.0.1)
 3: 5154 614928 java.lang.Class (java.base@14.0.1)
 4: 24757 594168 java.lang.String (java.base@14.0.1)
 5: 4491 439432 [Ljava.lang.Object; (java.base@14.0.1)
 6: 13177 421664 java.util.concurrent.ConcurrentHashMap$Node (java.base@14.0.1)
 7: 5025 160800 java.util.HashMap$Node (java.base@14.0.1)
 8: 8793 140688 java.lang.Object (java.base@14.0.1)
 9: 212 103584 [Ljava.util.concurrent.ConcurrentHashMap$Node; (java.base@14.0.1)

上面的結(jié)果非常有用,在一些性能調(diào)試方法可以起到意想不到的作用。

JFR功能

jcmd還支持jfr功能。JFR的全稱叫做Java Flight Recorder。你可以將其看做是JVM中一些事件的記錄器。

有關(guān)JFR的更多內(nèi)容,可以點擊查閱:http://m.fzitv.net/article/185648.htm

http://m.fzitv.net/article/185707.htm

到此這篇關(guān)于深入淺析jcmd:JDK14中的調(diào)試神器的文章就介紹到這了,更多相關(guān)jcmd:JDK14調(diào)試神器內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Spring實現(xiàn)Aware接口自定義獲取bean的兩種方式

    Spring實現(xiàn)Aware接口自定義獲取bean的兩種方式

    這篇文章主要介紹了Java編程實現(xiàn)Aware接口自定義獲取bean的兩種方式,通過BeanFactoryAware和ApplicationContextAware,具有一定參考價值,需要的朋友可以了解下。
    2017-09-09
  • ByteArrayOutputStream與InputStream互相轉(zhuǎn)換方式

    ByteArrayOutputStream與InputStream互相轉(zhuǎn)換方式

    這篇文章主要介紹了ByteArrayOutputStream與InputStream互相轉(zhuǎn)換方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • Nacos負載均衡策略總結(jié)

    Nacos負載均衡策略總結(jié)

    Nacos 作為目前主流的微服務(wù)中間件,包含了兩個頂級的微服務(wù)功能:配置中心和注冊中心,本文給大家總結(jié)了幾種Nacos負載均衡策略,通過圖文結(jié)合介紹的非常詳細,需要的朋友可以參考下
    2023-11-11
  • 關(guān)于spring依賴注入的方式以及優(yōu)缺點

    關(guān)于spring依賴注入的方式以及優(yōu)缺點

    這篇文章主要介紹了關(guān)于spring依賴注入的方式以及優(yōu)缺點,依賴注入,是IOC的一個方面,是個通常的概念,它有多種解釋,這概念是說你不用創(chuàng)建對象,而只需要描述它如何被創(chuàng)建,需要的朋友可以參考下
    2023-07-07
  • 修改idea的這些啟動參數(shù),令你的idea健步如飛

    修改idea的這些啟動參數(shù),令你的idea健步如飛

    這篇文章主要介紹了修改idea的這些啟動參數(shù),令你的idea健步如飛~具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-01-01
  • SpringBoot實現(xiàn)熱部署的方式總結(jié)

    SpringBoot實現(xiàn)熱部署的方式總結(jié)

    所謂熱部署,就是在應(yīng)用正在運行的時候升級軟件,卻不需要重新啟動應(yīng)用,對于Java來說,熱部署就是在運行時更新Java類文件,本文將深入探討SpringBoot有哪些方式可以實現(xiàn)熱部署,感興趣的朋友可以小編一探討學(xué)習(xí)
    2023-06-06
  • Java使用Socket通信傳輸文件的方法示例

    Java使用Socket通信傳輸文件的方法示例

    這篇文章主要介紹了Java使用Socket通信傳輸文件的方法,結(jié)合實例形式分析了java socket編程實現(xiàn)文件傳輸操作的相關(guān)技巧,需要的朋友可以參考下
    2017-06-06
  • SpringMVC ViewResolver視圖解析器組件

    SpringMVC ViewResolver視圖解析器組件

    這篇文章主要介紹了SpringMVC ViewResolver視圖解析器組件,Spring MVC的視圖解析器 ViewResolver 是框架中一個重要的組件,用于將控制器返回的邏輯視圖名稱解析為具體的視圖實現(xiàn)對象,最終呈現(xiàn)給用戶的是具體的視圖實現(xiàn)
    2023-04-04
  • eclipse連接數(shù)據(jù)庫并實現(xiàn)用戶注冊登錄功能

    eclipse連接數(shù)據(jù)庫并實現(xiàn)用戶注冊登錄功能

    這篇文章主要介紹了eclipse連接數(shù)據(jù)庫并實現(xiàn)用戶注冊登錄功能的相關(guān)資料,需要的朋友可以參考下
    2021-01-01
  • Java的動態(tài)綁定與雙分派_動力節(jié)點Java學(xué)院整理

    Java的動態(tài)綁定與雙分派_動力節(jié)點Java學(xué)院整理

    這篇文章主要介紹了Java的動態(tài)綁定與雙分派,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-08-08

最新評論

逊克县| 昆明市| 蓝山县| 浦县| 嘉峪关市| 中山市| 苗栗县| 汝南县| 乌什县| 延边| 万载县| 车险| 沛县| 十堰市| 神农架林区| 武夷山市| 松滋市| 永泰县| 青田县| 金华市| 涟水县| 东辽县| 平遥县| 柳林县| 北票市| 大城县| 含山县| 阿克苏市| 鄂温| 宜宾市| 霍城县| 桂东县| 吉林市| 蕉岭县| 左贡县| 濮阳市| 张家口市| 衡阳市| 新营市| 多伦县| 昂仁县|