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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

jhsdb:JDK 9的新工具

發布時間:2023/12/3 编程问答 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 jhsdb:JDK 9的新工具 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

我喜歡在分析性能和其他基于Java的應用程序的其他問題的早期步驟中使用JDK隨附的命令行工具,并在諸如jcmd , jps , jstat , jinfo , jhat和jmap , jrunscript , jstack之類的 工具上進行 博客撰寫和jdeps 。 JDK 9帶來了新的命令行工具與具體涉及到新的JDK 9的功能,如模塊(多個工具JLINK和JMOD )和增強棄用( jdeprscan )。 在本文中,我將重點介紹JDK 9隨附的用于處理性能和可維護性問題的新命令行工具: jhsdb 。

jhsdb工具在其Oracle JDK 9 Documentation Early Access頁面上進行了描述 ,“您可以使用jhsdb工具將其附加到Java進程或啟動事后調試器來分析崩潰的Java虛擬機(JVM)的核心轉儲內容。 )?!?該工具帶有幾個“模式”,并且這些模式中的幾個在名稱和功能上與以前的JDK發行版中可用的各個命令行工具相對應。 jhsdb工具不僅提供包含多個其他工具功能的單個工具,而且還提供應用這些不同功能的統一方法。 例如,用于獲取每個“模式”的幫助的jhsdb命令行語法是相同的。

jhsdb工具可以通過其進程標識符(PID)附加并應用于正在運行的JVM(包括正在掛起的JVM),類似于其他幾種工具(包括jcmd )的工作方式。 如果提供了核心文件和可執行文件,則jhsdb工具還可用于分析與崩潰的JVM相關的核心信息。 作為一致性的一個例子jhsdb提供,其所有的模式支持“共同選項” --pid (指定目標JVM的進程ID), --exe (指定的目標可執行), --core (指定目標核心轉儲文件)和--help (顯示特定于每種模式的選項)。

下一系列快照展示了--help選項與主jhsdb命令以及jhsdb的幾種“模式”中的每一個的jhsdb 。 一個觀察可以做出的是,常用的選項--pid , --core和--exe由所有模式中提供。 由此可以明顯看出,每種模式所支持的特定功能都是那些“通用”選項以外的功能。

jhsdb“ jstack”模式

jhsdb模式jstack的--help具有兩個特定的功能選項:-- --locks和--mixed 。 以下兩個屏幕快照演示了這些內容。

剛剛顯示的屏幕快照表明jhsdb工具的jstack模式為我們提供了死鎖檢測詳細信息,有關線程鎖的信息以及本機框架和Java框架的概述。

jhsdb“ jmap”模式

jhsdb模式jmap的--help顯示了該模式支持的幾個功能。 當僅使用--pid或僅使用--exe / --core組合執行jhsdb jmap , 輸出類似于 Linux pmap命令提供的輸出 。

正如人們所期望的, jhsdb的jmap模式提供的功能類似于單獨但名稱相似的jmap命令提供的功能。 這些包括堆轉儲( --heap ),類直方圖( --histo ),類加載器統計( --clstats ),和釋放信息( --finalizerinfo )和在以下四個屏幕快照證明。

jhsdb“ jinfo”模式

不足為奇的是, jinfo所述的模式jhsdb命令提供了與該重疊通過所提供的功能性金佛山命令 。 具體而言, jhsdb的jinfo模式允許查看目標JVM的標志和系統屬性 。

jhsdb jinfo使用三個主要選項:-- --flags查看JVM標志,-- --sysprops查看系統屬性,或者no參數查看標志和系統屬性。 接下來的兩個屏幕快照演示了jhsdb jinfo --flags和jhsdb jinfo --sysprops 。 不帶任何參數運行jhsdb jinfo先顯示系統屬性,然后顯示標志,但此處未顯示。

jhsdb“ jsnap”模式

jhsdb模式jsnap提供對內部類sun.jvm.hotspot.tools.JSnap先前提供的信息的訪問,該類先前在lib/sa-jdi.jar可用,并且已添加到 JDK 9的jhdsdb中。有兩個選項根據是否提供特定于模式的自變量或是否提供--all特定于模式的自變量從jhsdb jsnap輸出結果。 接下來的兩個屏幕快照演示了這兩個選項。

這些屏幕快照表明,沒有特定于模式的選項的jhsdb jsnap列出諸如與線程和類加載/卸載有關的事件以及核心JVM屬性之類的信息。 添加--all選項列出了這些相同的屬性,但此外還添加了更多的屬性,并且根據文檔 ,“打印所有性能計數器” 。

順便說一下,Marcus Hirt的《使用JVM性能計數器》提供了有趣的外觀,介紹如何應用JMX和自定義MBean來實現“類似于JRockit中可用的PerformanceCounters MBean”的工具。 我相信jhsdb jsnap --all帶來了在HotSpot中查看相同類型信息的簡單功能,就像Hirt所說的在jrcmd -l中使用jrcmd -l 。

jhsdb調試模式

三種jhsdb模式hsdb (用于交互式調試的圖形用戶界面), clhsdb (用于交互式調試的命令行界面)和debugd調試(遠程調試服務器)與調試操作相關。 在以后的文章中,我可能會仔細研究這些模式,但是現在,我僅顯示一些屏幕快照,這些快照演示了使用jhsdb hsdb的圖形交互。 GUI從jhsdb hsdb --pid <pid>啟動,此處顯示的大多數選項都是通過選擇“工具”下的特定菜單選項來運行的。

正如在HotSpot的“隱藏的寶藏 ”一文中可以看到的那樣,可維護性調試器GUI在JDK 9和jhsdb之前就已經可用,但是本文還顯示了在JDK 9引入jhsdb之前查找和啟動該工具要困難jhsdb 。

jhsdb與jcmd以及與其他命令行JDK工具的關系

我在博客文章jcmd中總結了通用工具jcmd與其他JDK提供的命令行工具的關系:一個JDK命令行工具可以全部統治它們 。 我在這里修改該表以將jhsdb添加到組合中。

功能性 jhsdb jcmd 類似工具
列出Java進程 不適用1 jcmd jps -lm
堆轉儲 jhsdb jmap --binaryheap jcmd <pid> GC.heap_dump jmap -dump <pid>
堆使用直方圖 jhsdb jmap --histo jcmd <pid> GC.class_histogram jmap -histo <pid>
線程轉儲 jhsdb jstack --locks
(鎖定線程框架的子集)
jcmd <pid> Thread.print jstack <pid>
列出系統屬性 jhsdb jinfo --sysprops jcmd <pid> VM.system_properties jinfo -sysprops <pid>
列出VM標志 jhsdb jinfo --flags jcmd <pid> VM.flags jinfo -flags <pid>

1您可以使用jcmd或jps -lm標識PID,如果與正在運行的JVM jcmd ,則jhsdb , jcmd和許多其他工具將在該PID上起作用。 我在這篇文章中使用jcmd來標識PID,但是當前的jhsdb文檔演示了使用jps來獲取JVM PID。

jhsdb工具是主要是命令行工具,也具有可選的交互式GUI,該GUI可支持報告掛起或崩潰的JVM的許多通常需要的屬性。 它提供了跨其模式的一致界面,并且命令行交互允許交互式幫助請求,因此在應用該工具之前必須了解或記住很少的語法。 如果可以記住“ jhsdb ”,則可以有效地開始使用該工具。 jhsdb工具是JDK 9的新增功能,但將功能集成到一個工具中,該工具以前可以從幾種不同的工具中獲得。

翻譯自: https://www.javacodegeeks.com/2017/06/jhsdb-new-tool-jdk-9.html

總結

以上是生活随笔為你收集整理的jhsdb:JDK 9的新工具的全部內容,希望文章能夠幫你解決所遇到的問題。

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