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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

使用jstat的JVM统计信息

發(fā)布時間:2023/12/3 编程问答 52 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用jstat的JVM统计信息 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

過去,我已經(jīng)寫過關于Oracle和/或OpenJDK Java開發(fā)工具包(JDK)隨附的幾個命令行工具的信息,但是我從來沒有專門寫過jstat工具 。 Oracle JDK 9文檔Early Access指出jstat用于“監(jiān)視Java虛擬機(JVM)統(tǒng)計信息”。 還有一個警告,“此命令是實驗性的,不受支持。” 盡管我引用了JDK 9文檔,但是jstat以Java SE 8 , Java SE 7 , Java SE 6和J2SE 5中的某種形式( 一次稱為jvmstat )成為Sun / Oracle JDK的一部分。 Java 1.4.1引入了HotSpot JVM的檢測(僅在設置了-XX:+UsePerfData時啟用),并且自Java 1.4.2開始提供了“始終在線檢測”。

jstat提供的許多信息可以從可視工具(例如VisualVM ,JMX和平臺MBean),垃圾收集日志或通過JVM選項中收集。 但是,與每個替代方案相比, jstat具有優(yōu)勢。 它的優(yōu)點包括命令行工具所共有的優(yōu)點,例如可以從腳本執(zhí)行并運行而無需開發(fā)人員或其他人員。 能夠將jstat應用于已經(jīng)運行的Java進程以開始監(jiān)視其JVM統(tǒng)計信息,而不是在啟動JVM時指定對那些選項的監(jiān)視,這也很有用。

對于本文中的示例,我正在使用Oracle JDK 9 build 164 。 下一個屏幕快照顯示了該版本,還顯示了開始使用jstat時要應用的第一個標志之一: -options標志。

如屏幕快照所示,以及jstat文檔中所述 , jstat -options用于“顯示特定平臺安裝的選項列表”。 在此處顯示的示例中,以下選項可用:

  • -class
  • -compiler
  • -gc
  • -gccapacity
  • -gccause
  • -gcmetacapacity
  • -gcnew
  • -gcnewcapacity
  • -gcold
  • -gcoldcapacity
  • -gcutil
  • -printcompilation

在本文中,我將只討論這些可用選項的一小部分,但是jstat文檔提供了一個句子來描述每個jstat選項,并且每個選項的命令行用法與所有其他選項非常相似。 實際上,一旦學習了有關jstat使用的一些小知識,各種選項的執(zhí)行就變得容易了。 使用jstat的困難部分通常是解釋jstat提供的數(shù)據(jù)。

jstat -help選項將打印簡單用法,如下一個屏幕快照所示。

從jstat用法消息中,我們了解到jstat命令行工具是通過首先運行命令名稱( jstat ),其后帶有連字符的選項名稱,然后是可選的-t和/或-h標志,以及隨后的命令來執(zhí)行的vimid ,并包含一個可選的時間間隔和在提供的時間間隔上執(zhí)行命令的可選次數(shù)。 示例比描述性文字清晰,這篇文章和jstat文檔中給出了一些示例。

為了監(jiān)視“本地” JVM統(tǒng)計信息, vmid只是JVM進程的進程ID。 這與臀部jcmd (或stodgy jps )為Java進程返回的PID相同。 下一個屏幕快照演示了使用jcmd的Java應用程序,我在我的例子(監(jiān)測(在這種情況下,8728)來識別PID JEDIT在這種情況下)。

jstat文檔的“虛擬機標識符”部分提供了有關vmid的更多詳細信息,因為更復雜的vmid (用于JVM統(tǒng)計信息的遠程監(jiān)視)可以包括協(xié)議,本地目標計算機的vmid ,主機和端口。 盡管我在本文中所有示例都將使用jstat和一個簡單的Java PID( vmid ),但是jstat文檔的確提供了使用更詳細的vmid進行JVM統(tǒng)計信息遠程監(jiān)視的示例。

對于本文其余的示例,我想要一個Java應用程序,從JVM統(tǒng)計信息監(jiān)視的角度來看,它比JEdit有趣。 我決定在強烈推薦的Plumbr博客上使用Nikita Salnikov-Tarnovski的帖子“ Garbage Collection:提高吞吐量 ”中的“ PigInThePython ”示例應用程序。 如果您有興趣查看PigInThePython的源代碼,請參閱該文章 。

對于使用jstat第一個示例,我使用其最常用的選項之一: -gcutil 。 除了演示-gcutil選項之外,我還將使用第一個示例來演示和解釋除gcutil之外通常適用于其他jstat選項的jstat輸出選項。

以下屏幕快照演示了如何使用jcmd來獲取PigInThePython應用程序的PID(在本例中為5096)以及如何以最簡單的形式運行jstat -gcutil 。

jstat -gcutil以最簡單的形式(沒有其他選項)顯示沒有時間戳的單行輸出。 列標題中描述jstat文檔節(jié)“-gcutil選項”,其也描述了-gcutil選項如,“垃圾收集統(tǒng)計摘要”。 例如,本文檔說明,其中一些列指示不同空間分配的使用百分比,而其他列指示垃圾收集事件的數(shù)量和垃圾收集的總時間。

我們通常希望將jstat提供的統(tǒng)計信息與受監(jiān)視系統(tǒng)中其他事件發(fā)生的時間相關聯(lián),以識別這些事件與對JVM的影響之間的相關性。 jstat -t選項將在輸出的開頭加上時間戳。 此時間戳是自受監(jiān)視的JVM啟動以來的秒數(shù)。 盡管這對于人類而言不像其他格式那樣方便閱讀,但確實可以將JVM統(tǒng)計信息與運行JVM的時間范圍以及包含時間戳的垃圾收集日志相關聯(lián)。 下一個屏幕快照演示了-t的作用:

監(jiān)視JVM統(tǒng)計信息(例如由jstat -gcutil提交的統(tǒng)計信息)不止一次通常非常有用。 下一個屏幕快照演示了如何使用指定的間隔( 100ms指定的100毫秒間隔,以每100毫秒捕獲并顯示這些結果。

第一次顯示快照后,最后一個屏幕快照中的輸出永遠不會重復帶有列首字母縮寫的標題。 如果希望在一定的行數(shù)之后重復該標頭,以便更輕松地知道哪些數(shù)字屬于輸出中更遠的列,則-h選項可用于指定列之后的結果數(shù)標頭再次顯示。 在下一個屏幕快照中, -h20用于每20行查看一次標題。

有時可能需要讓jstat如此頻繁地且僅在一定次數(shù)內提供其數(shù)據(jù)。 間隔允許您指定結果之間的持續(xù)時間,間隔指定之后的任何整數(shù)都將限制顯示結果的總次數(shù)。 在接下來的屏幕快照,所述15處命令的末尾限制輸出至15點總的行。

jstat -gccause選項返回與-gcutil相同的信息,但還會添加有關導致受監(jiān)視垃圾收集的原因的信息。 以下屏幕快照對此進行了演示。

在上面的屏幕快照中,我們看到“上次垃圾收集的原因”(LGCC)是“ G1大量分配”,而“當前垃圾收集的原因”(GCC)是“無GC”(當前沒有垃圾收集)進行)。

下一個屏幕快照演示了如何使用jstat -class查看“類加載器統(tǒng)計信息”,以了解已加載的類數(shù)(“ Loaded”),已加載的千字節(jié)數(shù)(第一個“ Bytes”),已卸載的類數(shù)(“ Unloaded”)以及數(shù)量卸載的字節(jié)數(shù)(第二個“字節(jié)”),以及“執(zhí)行類加載和卸載操作所花費的時間”(“時間”)。

命令jstat -printcompilation指示“ Java HotSpot VM編譯器方法統(tǒng)計信息”,并在下一個屏幕快照中演示。

-printcompilation選項顯示列“已編譯”(“最近編譯的方法執(zhí)行的編譯任務數(shù)”),“大小”(“最近編譯的方法的字節(jié)碼的字節(jié)數(shù)”),“類型”(“最近編譯的方法的編譯類型”和“方法”(最近編譯的方法的類/方法的名稱,以與HotSpot VM選項-XX:+PrintCompilation一致的格式表示)。

使用jstat -compiler命令,我們可以查看“ Java HotSpot VM即時編譯器統(tǒng)計信息”,例如已執(zhí)行的編譯任務數(shù)(“ Compiled”),失敗的編譯任務數(shù)(“ Failed”),無效的編譯任務數(shù)(“無效”),編譯所花費的時間(“時間”),上次失敗的編譯的類型和類/方法名稱(“ FailedType”和“ FailedMethod”)。 下一個屏幕快照對此進行了演示。

jstat還有其他幾個選項,其中大多數(shù)是特定于受監(jiān)視的JVM中有關垃圾回收的不同角度的。

jstat文檔警告該工具是試驗性的,在JDK的未來版本中可能會更改或刪除。 該文檔還警告不要編寫腳本和工具來解析jstat的輸出,因為將來輸出的內容或格式可能會更改。 但是,我可以看到有人可能會冒這個險并編寫解析代碼,因為可以從腳本輕松訪問此命令行工具,并且所需的解析代碼不會很復雜。

這篇文章是jstat ,但是要了解更多有關該工具的知識。 與使用該工具相比,對該工具結果的解釋要復雜得多,并且jstat提供的數(shù)據(jù)分析可能比收集數(shù)字的工作更具挑戰(zhàn)性。 下面列出了一些其他資源,以提供有關使用jstat工具收集和分析Java虛擬機統(tǒng)計信息的更多信息。

其他jstat資源

  • Java Platform 9,標準版工具參考指南 : jstat
  • Java Platform 8,Standard Edition故障排除指南 : jstat實用程序
  • Plumbr:jstat
  • 使用jstat監(jiān)視Java垃圾收集
  • 解釋jstat的Full GC事件數(shù)
  • 解釋jstat(堆內存)以懷疑Java內存泄漏
  • 解釋jstat結果
  • jstat工具:-gc選項提供的新元空間統(tǒng)計信息
  • 學習java jstat
  • 'jstat -gcutil'–垃圾回收統(tǒng)計
  • 'jstat'命令選項和參數(shù)
  • 使用Jstat在Java中進行GC監(jiān)視
  • 在Java中監(jiān)視垃圾收集
  • 使用jstat報告自定義JVM指標集

翻譯自: https://www.javacodegeeks.com/2017/05/jvm-statistics-jstat.html

總結

以上是生活随笔為你收集整理的使用jstat的JVM统计信息的全部內容,希望文章能夠幫你解決所遇到的問題。

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