91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么解析Java虛擬機中的Serviceability Agent

發布時間:2021-11-20 16:44:40 來源:億速云 閱讀:232 作者:柒染 欄目:大數據

這篇文章給大家介紹怎么解析Java虛擬機中的Serviceability Agent,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

我們在問題的分析診斷過程中,Debugging Troubleshooting 工具起了很大的作用,有一個稱手的工具,能節省大量的精力,快速解決原本需要耗費許久的工作。但比分析應用更底層的,Low Level 到 JVM 這一層級的工具卻比較少。

比如有些時候,你在分析一個應用問題時,想要了解應用當前內存結構,加載類的內容,線程的 Stack Memory,死鎖分析,存活對象統計和查詢等等。

以上這些,用哪款工具比較合適呢?這些比較低層的分析,只能依靠 JVM 的支持,才能正確的分析。好在官方提供了這樣一款工具。

這就是我們本次要提到的工具,或者準確來說是個工具集,但提供給我們使用時,類似于一站式的感覺。在一個工具里完成大量的需求,它是 Serviceability Agent,更多時候被稱為 SA。

什么是SA?

The Serviceability Agent is a Sun private component in the HotSpot repository that was developed by HotSpot engineers to assist in debugging HotSpot. They then realized that SA could be used to craft serviceability tools for end users since it can expose Java objects as well as HotSpot data structures both in running processes and in core files.

概括來講,這是Sun (Oracle)公司提供的一個用于分析HotSpot運行時和Core文件中數據的工具。可以 attach 到Java 進程或分析 Core文件中的數據,了解加載的 class,是一個包含大量 Java API 和工具的工具集。

而且,SA 在 attatch到 進程之后,會暫停當前進程的執行,拿到的是進程的一個 snapshot。當前進程會在 SA 斷開后繼續執行。

怎樣使用

SA 在JDK中是以 Jar 文件的形式提供的,位于JAVA_HOME/lib/sa-jdi.jar。和一般的 Jar 文件執行一樣。SA提供了兩種使用方式

  •  GUI 方式的 HSDB 

  •  命令行的 CLIHSDB

例如我們使用GUI時,切換到該目錄下,執行如下命令:

java -cp sa-jdi.jar sun.jvm.hotspot.HSDB

選擇 File 菜單下的 Attach  to HotSpot Process,輸入Java進程的pid即可。

此時,會看到進程的線程都在列表里展示了。

怎么解析Java虛擬機中的Serviceability Agent

 頂部的一系列圖標,可以查看選定線程的信息,例如能進行 Inspect,查看VM層面 線程對象的結構,選擇 Stack Memory,查看 包含地址信息的stack 的數據。

怎么解析Java虛擬機中的Serviceability Agent

后面是要以通過 Jstack拿到的Stack Trace。

在 Tools 菜單下,有一系列的工具。

怎么解析Java虛擬機中的Serviceability Agent

我們選幾個來簡要介紹下。

Class Browser

通過這個,可以看到所有 JVM 加載的 class。對應類內的方法等信息自然也都能查到。它同時還支持把一個 class dump 到本地。這對于一些只能通過 core文件來分析問題的情況,可以拿到 class 來分析。

操作也簡單,找到對應的class, 點擊create class 就OK了, class 生成到lib目錄下。

怎么解析Java虛擬機中的Serviceability Agent

Find Object by Query

這個功能和 SQL類似,在文本框中輸入要查詢的對象

例如這個:

select t from java.lang.Thread t 

怎么解析Java虛擬機中的Serviceability Agent

Code Viewer

對于一個類內的方法,有些時候需要分析方法的 JVM 指令或者 JIT 編譯后的廣場,可以使用這個工具,在輸入 Class或者 Method的地址后,就會看到其對應的內容

怎么解析Java虛擬機中的Serviceability Agent

Find Value in Heap

該工具可以在類似于 GC 問題時,通過指定對象的地址查看對象是否還存在于Heap中。

怎么解析Java虛擬機中的Serviceability Agent

通過SA,我們不僅能分析到 Java 應用層面的東西,而且一些JVM 層面的,甚至 JIT 編譯的方法, GC 是否回收對象,都能夠很容易的了解到,仿佛一個JVM 的顯微鏡,在SA的協助下,問題都無處遁形。

關于怎么解析Java虛擬機中的Serviceability Agent就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

达日县| 师宗县| 伊金霍洛旗| 普安县| 交口县| 岳西县| 宁武县| 油尖旺区| 新建县| 武夷山市| 台州市| 高陵县| 枞阳县| 昭苏县| 甘南县| 凯里市| 霍林郭勒市| 青海省| 定襄县| 彰化市| 遵化市| 漠河县| 泗阳县| 衡阳市| 资阳市| 巩留县| 寻甸| 武威市| 布尔津县| 河间市| 砚山县| 道孚县| 桃江县| 开原市| 专栏| 普宁市| 淄博市| 庐江县| 隆化县| 三亚市| 德阳市|