jcmd,大约JDK 11
NicolasFr?nkel最近在博客文章“ 行業工具OpenJDK 11 ”中發布了與OpenJDK 11一起提供的命令行工具的調查。 在那篇文章中,他簡要總結了工具jps (一個JVM進程狀態工具 ), jinfo (一個JVM配置詳細信息 ), jmap ( 堆上的類/對象 ), jstack ( 線程分析 )和圖形工具JConsole ( 監視Java應用程序 )。 。
所有這些工具都很方便Java開發人員了解如何根據需要進行應用,Fr?nkel的帖子為這些工具的新手提供了很好的介紹性概述。 近年來,正如我在“ jcmd:一個 ” 一文中所討論的,我已經轉向使用單個jcmd工具代替大多數其他命令行工具(盡管它并不能以任何方式代替圖形工具JConsole)。 JDK命令行工具可以全部統治 。”
關于與jcmd 相關的/ r / java subreddit線程 ,與各個工具進行了簡短的討論。 我可以看到兩種方法的優點(使用jcmd或使用多個單獨的工具)。 我對比了我對它們相對優勢和劣勢的看法。
| 單一互動工具 | 具有不同名稱和選項的不同工具 | 
| 由于具有交互性,因此運行功能需要更多的擊鍵/命令 | 對于熟悉命令和選項的人員以及給定的JVM進程支持使用正在使用的命令/選項的情況,所需的擊鍵次數更少 | 
| jcmd <pid> help提供了該JVM進程支持的特定功能以進行jcmd分析 | 針對JVM進程運行單個工具的結果是檢測該工具對該進程的支持(或缺乏)的主要方法 | 
| 僅支持某些個別工具的最常用功能子集 | 每個工具的性質決定了支持功能的標準 | 
| 更新,在線資源更少 | 較舊,具有更多在線資源 | 
| 不視為“實驗性” | 幾個單獨的工具( jps , jinfo , jmap , jstack等)被標記為“實驗性”,并且可能會更改/刪除(“ 工具參考”指出“ 實驗工具不受支持,應在理解的情況下使用。它們可能不會在將來的JDK版本中可用。其中一些工具當前在Windows平臺上不可用。”) | 
| 可以通過DiagnosticCommandMBean以 編程方式使用提供的重要jcmd詳細信息 | 個別工具很少有直接對應的編程訪問權限 | 
是使用jcmd還是使用單獨的工具之一,很大程度上取決于個人的喜好和偏好。 那些已經使用過現有單個工具的人可能會喜歡那些工具中的更直接的方法,而那些不熟悉單個工具的人可能會喜歡jcmd提供的交互功能來確定哪些工具和選項可用。 我當然更喜歡非實驗性工具,而不是“實驗性”工具,但是對于許多版本的JDK,這些工具中的許多都被標記為“實驗性”,并且仍然存在。
前面提到的博客文章“ jcmd:一個全部統治他們的JDK命令行工具 ”描述了如何使用jcmd的交互功能來標識其支持各種JVM進程的功能。 在該帖子的末尾有一張表格,將jcmd選項“映射”到一些相應的單個工具的命令和選項。 為了方便起見,我在這里復制。
| 列出Java進程 | jcmd | jps -lm | 
| 堆轉儲 | jcmd <pid> GC.heap_dump | jmap -dump <pid> | 
| 堆使用直方圖 | jcmd <pid> GC.class_histogram | jmap -histo <pid> | 
| 線程轉儲 | jcmd <pid> Thread.print | jstack <pid> | 
| 列出系統屬性 | jcmd <pid> VM.system_properties | jinfo -sysprops <pid> | 
| 列出VM標志 | jcmd <pid> VM.flags | jinfo -flags <pid> | 
jcmd工具繼續得到增強。 JDK 9通過JEP 228 (“添加更多診斷命令”)對jcmd進行了一些增強。 在JDK 11中,對顯示類加載器層次結構的支持已添加到jcmd 。 這是對類加載器層次結構的支持的簡單屏幕快照。
正如Fr?nkel在其文章中所總結的那樣: “ JDK提供了許多現成的工具來幫助開發人員”,并且“它們在開發人員的日常工作中是一筆巨大的財富。” 無論選擇使用單個JDK提供的工具還是選擇使用jcmd這種觀點都適用。
翻譯自: https://www.javacodegeeks.com/2019/02/jcmd-circa-jdk-11.html
總結
以上是生活随笔為你收集整理的jcmd,大约JDK 11的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: 港版iphone11支持电信吗
- 下一篇: 我国已发现的鸟类有多少种 我国已发现的鸟
