日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

jcmd:一个可以全部统治的JDK命令行工具

發布時間:2023/12/3 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 jcmd:一个可以全部统治的JDK命令行工具 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

我在過去的幾篇文章中都引用了方便的JDK工具jcmd ,但是像我以前對jps所做的那樣,僅專注于其實用性 。 jcmd工具是隨Oracle Java 7引入的,在通過使用Java標識Java進程的ID (與jps相似),獲取堆轉儲 (與jmap相似),獲取線程轉儲 (與jstack相似)來解決 JVM應用程序 問題方面特別有用。 ),查看虛擬機特征(例如系統屬性和命令行標志)(類似于jinfo ),并獲取垃圾回收統計信息(類似于jstat )。 jcmd工具被稱為“ 用于調查和解決JVM應用程序問題的瑞士軍刀 ”和“ 隱藏的寶石” 。

在使用大多數JDK命令行工具(包括jcmd )時,標識要為其使用命令行工具的Java進程的進程ID(pid)通常很重要。 只需運行不帶任何參數的命令,使用jcmd即可輕松完成此操作,如下一個屏幕快照所示。

在上面的示例中,運行不帶參數的jcmd顯示了兩個正在運行的Java進程( jcmd自身的pid為324,另一個Java進程的pid為7268)。 請注意,盡管在列出Java進程時jcmd工作原理與jps非常相似,但與沒有參數-lm jps相比, jcmd列出的信息更多。

運行jcmd -h用于顯示幫助和用法信息jcmd在下一屏幕快照證明。

如剛剛所示,該幫助說明jcmd在“未給出任何選項”時“列出Java進程”。 幫助還指出,這是類似于運行行為jcmd -p ,但我認為它的意思是說運行jcmd不帶選項相當于跑步jcmd -l ,這是在接下來的屏幕快照所示。

就像在不帶任何選項的情況下運行jcmd , jcmd -l列出了Java進程及其各自的pid。 本例中的pids不同,因為它是jcmd的不同執行, jcmd我運行的Java進程也不同。

運行jcmd -h顯示相對較少的選項。 要查看jcmd支持的許多功能的幫助,需要詢問jcmd特定Java進程支持哪些功能。 下一個屏幕快照對此進行了說明。 我首先運行不帶選項的jcmd來發現感興趣的Java進程的pid(在本例中為6320)。 然后,我可以運行jcmd 6320 help來查看jcmd支持哪些命令。

上一個屏幕快照演示了jcmd支持pid標識的特定Java VM的命令。 具體來說,它指出“以下命令可用:”,然后列出它們:

  • JFR停止
  • 啟動JFR
  • JFR轉儲
  • JFR。檢查
  • VM.native_memory
  • VM.check_commercial_features
  • VM.unlock_commercial_features
  • 管理代理停止
  • ManagementAgent.start_local
  • ManagementAgent.start
  • GC.rotate_log
  • GC.class_stats
  • GC.class_histogram
  • GC.heap_dump
  • GC.run_finalization
  • GC運行
  • 線程打印
  • 虛擬機正常運行時間
  • 虛擬機標志
  • VM.system_properties
  • VM.command_line
  • 虛擬機版本
  • 幫幫我

當針對另一個Java VM進程的pid運行jcmd <pid> help ,可能會獲得不同的可用命令列表。 下一個屏幕快照中jcmd 1216 help進行了說明,當針對該進程的pid為1216執行jcmd 1216 help時。

通過比較最后兩個屏幕快照,可以清楚地看到jcmd支持針對不同Java VM實例的不同命令。 這就是為什么通過在help命令中指定pid列出特定VM支持的命令的原因。 未針對原始檢查的VM列出的第二個VM可用的一些命令(在這種情況下為pid 1216)包括以下命令:

  • VM.log
  • 管理代理狀態
  • Compiler.directives_clear
  • Compiler.directives_remove
  • Compiler.directives_add
  • Compiler.directives_print
  • VM.print_touched_methods
  • 編譯器
  • 編譯器代碼清單
  • 編譯器隊列
  • VM.classloader_stats
  • JVMTI.data_dump
  • VM.stringtable
  • 虛擬機
  • VM.class_hierarchy
  • GC.finalizer_info
  • GC.heap_info
  • VM.info
  • VM.dynlibs
  • VM.set_flag

該“幫助”還建議:“有關特定命令的更多信息,請使用'help <command>'。” 在下一個針對jcmd的Thread.print屏幕快照中說明了jcmd 。

在討論jcmd Thread.print命令的主題時,是一個很好的時機來說明如何使用它來查看Java進程的線程堆棧。 下一個屏幕快照顯示了執行jcmd <pid> Thread.print (在本例中為pid 6320的Java進程)時看到的結果要冗長得多的開始。

jcmd支持多個VM.*命令: VM.version , VM.uptime , VM.command_line , VM.flags , VM.system_properties , VM.native_memory和VM.classloader_stats 。 下一個屏幕快照說明了對于使用pid 6320的Java進程使用jcmd <pid> VM.version和jcmd <pid> VM.uptime的情況。

下一個屏幕快照演示了jcmd <pid> VM.command_line使用pid 6320來執行jcmd <pid> VM.command_line 。

從該屏幕快照(其中顯示了運行jcmd 6320 VM.command_line的輸出的頂部)中,我們可以從提供給該進程的JVM命令行參數中看到,它是與NetBeans相關的進程。 使用pid 6320對Java進程運行命令jcmd <pid> VM.flags顯示傳遞給該進程的HotSpot選項。

可以使用jcmd <pid> VM.system_properties列出Java進程使用的系統屬性,這將在下一個屏幕快照中進行說明。

當嘗試對尚未啟用本機內存跟蹤 (NMT)的Java進程運行jcmd <pid> VM.native_memory ,將顯示錯誤消息“未啟用本機內存跟蹤”,如下一個屏幕快照所示。

要使用命令jcmd <pid> VM.native_memory ,應使用-XX:NativeMemoryTracking=summary或-XX:NativeMemoryTracking=detail選項啟動要測量的JVM(Java進程)。 使用這些選項之一啟動VM后,就可以對該JVM進程執行命令jcmd <pid> VM.native_memory baseline ,然后執行jcmd <pid> VM.native_memory detail.diff 。

jcmd <pid> VM.classloader_stats命令可提供對類加載器的了解。 下一個針對pid 1216的Java進程的屏幕快照中顯示了該快照:

jcmd <pid> VM.class_hierarchy是一個有趣的命令,可打印在目標Java VM進程中加載??的類的層次結構。

jcmd <pid> VM.dynlibs可用于查看動態庫信息。 在針對使用pid 1216的Java進程執行時的下一個屏幕快照中對此進行了演示。

jcmd <pid> VM.info列出了許多有關目標Java VM進程的信息,包括VM摘要以及有關該進程,垃圾收集事件,動態庫,提供給VM的參數以及主機某些特征的信息。機。 在jcmd 1216 VM.info的下一個屏幕快照中演示了此輸出開始的一小部分:

下一個屏幕快照展示了jcmd <pid> VM.stringtable和jcmd <pid> VM.symboltable :

下一個屏幕快照中演示了jcmd <pid> Compiler.directives_print使用。

jcmd支持的幾個命令支持管理和監視垃圾收集。 其中兩個是jcmd <pid> GC.run [類似于System.gc() ]和jcmd <pid> GC.run_finalization [類似于System.runFinalization() ]。 在下一個屏幕快照中將演示其中的兩個。

命令jcmd <pid> GC.class_histogram提供了一種方便的方法來查看對象直方圖 ,如下一個屏幕快照所示。

jcmd可用于通過jcmd <pid> GC.heap_dump <filename>針對正在運行的Java VM生jcmd <pid> GC.heap_dump <filename>轉儲,這將在下一個屏幕快照中進行演示。

現在,可以使用jhat命令來處理jcmd生成的堆轉儲,如以下兩個屏幕快照所示。

有些jcmd命令僅適用于使用-XX:+UnlockDiagnosticVMOptions JVM標志啟動的Java VM。 下一個屏幕快照演示了當我嘗試針對未以-XX:+UnlockDiagnosticVMOptions標志啟動的Java VM運行jcmd <pid> GC.class_stats時發生的情況。

使用-XX:+UnlockDiagnosticVMOptions啟動目標VM時, jcmd <pid> GC.class_stats顯示“ 有關Java類元數據的統計信息 ”。

這篇文章介紹了jcmd提供的一些命令,但沒有涉及與Java Flight Recorder [ JFR ](名稱以JFR.*開頭的命令)相關的功能,以檢查并啟用商業功能( jcmd <pid> VM.check_commercial_features和jcmd <pid> VM.unlock_commercial_features )。

在一個命令行工具中, jcmd匯集了幾個命令行JDK工具的功能。 這篇文章演示了jcmd提供的一些功能。

翻譯自: https://www.javacodegeeks.com/2016/03/jcmd-one-jdk-command-line-tool-rule.html

總結

以上是生活随笔為你收集整理的jcmd:一个可以全部统治的JDK命令行工具的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产+日韩+欧美 | 青青草青娱乐 | 一级黄色片大全 | 亚洲午夜福利一区二区三区 | 国产成人自拍视频在线 | 四虎网站在线播放 | www黄色网 | 国产伦精品一区二区三区高清 | 一区二区三区网 | 日日噜噜噜噜人人爽亚洲精品 | 国产av电影一区 | 美足av| 在线精品视频一区 | 日韩在线一区二区三区 | 亚洲av无码精品一区二区 | 亚洲一区 在线播放 | 国产精品国产三级国产aⅴ9色 | 光棍影院一区二区 | 欧美极品jizzhd欧美仙踪林 | 色婷婷av久久久久久久 | 国产精品1区2区3区 在线看黄的网站 | 欧美综合久久久 | 中文字幕1区| 亚洲美女性生活视频 | 激情xxx | 黄色爱爱视频 | 亚洲中文字幕在线观看 | 台湾无码一区二区 | 九九热在线视频免费观看 | 国产玖玖在线 | 337p色噜噜| 国毛片 | 老熟女高潮喷水了 | av高清在线观看 | 中文字幕一区二区三区在线视频 | 国产一区二区三区免费观看 | 1级黄色大片 | 亚洲欧美日韩天堂 | caoporn国产 | 日本成人在线免费视频 | 中文字幕一区二区三三 | 一级少妇女片 | 在线二区 | 天堂资源中文 | 国产中文字幕91 | 亚洲污网站 | 欧美一级欧美三级 | 亚洲av永久无码精品国产精品 | 人人舔 | 91成人一区二区三区 | 免费激情网站 | 国产91久 | 国产精品爽爽爽 | 97在线免费观看 | 精品国产色 | 91精品国产色综合久久不8 | 乱老熟女一区二区三区 | 国产精品剧情 | 欧美资源 | 天海翼一二三区 | 欧美性受视频 | 日本在线一级片 | 欧美性猛交xxxⅹ富婆 | 香蕉av一区二区三区 | 国产又粗又猛又色又 | 少妇不卡视频 | 黄色正能量网站 | 久久精品电影网 | 美少妇av | 久久久久无码精品 | 免费久久精品视频 | 我们的2018在线观看免费高清 | 国产亚洲精品成人无码精品网站 | 中文字幕亚洲欧美日韩在线不卡 | 中文字幕亚洲天堂 | 欧美性猛交xxxx乱大交蜜桃 | 少妇av | 国产成人综合精品 | 我会温柔一点的日剧 | 99久热在线精品996热是什么 | 日本xxxx高清 | 国产福利一区二区三区在线观看 | 想要视频在线观看 | 亚洲一区中文字幕在线观看 | 色在线免费观看 | 在线观看免费高清 | 国产va| 台湾佬久久| 800av在线播放| 一区二区影院 | 337p日本欧洲亚洲大胆精筑 | 无码少妇一区二区三区 | 亚洲一区二区三区四 | 就操网 | 日韩在线观看视频一区二区 | 欧美亚洲黄色片 | 日韩欧美在线观看一区 | 干美女av | 99久久国产综合 |