天天看點

Jprofile解析dump檔案使用詳解(二)4 子產品功能點詳解

4 子產品功能點詳解

也可以使用工具欄中的“轉到開始”按鈕通路第一個資料集

4.1 記憶體視圖 Memory Views

JProfiler的記憶體視圖部分可以提供動态的記憶體使用狀況更新視圖和顯示關于記憶體配置設定狀況資訊的視圖。所有的視圖都有幾個聚集層并且能夠顯示現有存在的對象和作為垃圾回收的對象。

  • 所有對象 All Objects

    顯示類或在狀況統計和尺碼資訊堆上所有對象的包。你可以标記目前值并顯示差異值。

  • 記錄對象 Record Objects

    顯示類或所有已記錄對象的包。你可以标記出目前值并且顯示差異值。

  • 配置設定通路樹 Allocation Call Tree

    顯示一棵請求樹或者方法、類、包或對已選擇類有帶注釋的配置設定資訊的J2EE元件。

  • 配置設定熱點 Allocation Hot Spots

    顯示一個清單,包括方法、類、包或配置設定已選類的J2EE元件。你可以标注目前值并且顯示差異值。對于每個熱點都可以顯示它的跟蹤記錄樹。

  • 類追蹤器 Class Tracker

    類跟蹤視圖可以包含任意數量的圖表,顯示標明的類和包的執行個體與時間。

4.2 堆周遊 Heap Walker

使用背景

在視圖中找到增長快速的對象類型,在memory視圖中找到Concurrenthashmap—點右鍵----選擇“Show Selectiion In Heap Walker”,切換到HeapWarker 視圖;切換前會彈出選項頁面,注意一定要選擇“Select recorded objects”,這樣Heap Walker會在剛剛的那段記錄中進行分析;否則,會分析tomcat的所有記憶體對象,這樣既耗時又不準确;

在JProfiler的堆周遊器(Heap Walker)中,你可以對堆的狀況進行快照并且可以通過選擇步驟下尋找感興趣的對象。堆周遊器有五個視圖:

  • 類 Classes

    顯示所有類和它們的執行個體,可以右擊具體的類"Used Selected Instance"實作進一步跟蹤。

  • 配置設定 Allocations

    為所有記錄對象顯示配置設定樹和配置設定熱點。

  • 索引 References

    為單個對象和“顯示到垃圾回收根目錄的路徑”提供索引圖的顯示功能。還能提供合并輸入視圖和輸出視圖的功能。

  • 時間 Time

    顯示一個對已記錄對象的解決時間的柱狀圖。

  • 檢查 Inspections

    顯示了一個數量的操作,将分析目前對象集在某種條件下的子集,實質是一個篩選的過程。

在HeapWalker中,找到洩漏的對象

HeapWarker 會分析記憶體中的所有對象,包括對象的引用、建立、大小和數量.

通過切換到References頁簽,可以看到這個類的具體對象執行個體。 為了在這些記憶體對象中,找到洩漏的對象(應該被回收),可以在該對象上點選右鍵,選擇“Use Selected Instances”縮小對象範圍

Jprofile解析dump檔案使用詳解(二)4 子產品功能點詳解

通過引用分析該對象

References 可以看到該對象的的引用關系,選項顯示引用的類型

Jprofile解析dump檔案使用詳解(二)4 子產品功能點詳解
  • incoming

    顯示這個對象被誰引用

  • outcoming

    顯示這個對象引用的其他對象

選擇“Show In Graph”将引用關系使用圖形方式展現;

選中該對象,點選

Show Paths To GC Root

,會找到引用的根節點

Jprofile解析dump檔案使用詳解(二)4 子產品功能點詳解

通過建立分析該對象

如果還不能定位記憶體洩露的地方,我們可以嘗試使用Allocations頁簽,該頁簽顯示對象是如何建立出來的;

我們可以從建立方法開始檢查,檢查所有用到該對象的地方,直到找到洩漏位置;

圖表 Graph

你需要在references視圖和biggest視圖手動添加對象到圖表,它可以顯示對象的傳入和傳出引用,能友善的找到垃圾收集器根源。

tips:在工具欄點選"Go To Start"可以使堆記憶體重新計數,也就是回到初始狀态。

CPU 視圖 CPU Views

JProfiler 提供不同的方法來記錄通路樹以優化性能和細節。線程或者線程組以及線程狀況可以被所有的視圖選擇。所有的視圖都可以聚集到方法、類、包或J2EE元件等不同層上。CPU視圖部分包括:

通路樹 Call Tree

顯示一個積累的自頂向下的樹,樹中包含所有在JVM中已記錄的通路隊列。JDBC,JMS和JNDI服務請求都被注釋在請求樹中。請求樹可以根據Servlet和JSP對URL的不同需要進行拆分。

熱點 Hot Spots

顯示消耗時間最多的方法的清單。對每個熱點都能夠顯示回溯樹。該熱點可以按照方法請求,JDBC,JMS和JNDI服務請求以及按照URL請求來進行計算。

通路圖 Call Graph

顯示一個從已選方法、類、包或J2EE元件開始的通路隊列的圖。

方法統計 Method Statistis

顯示一段時間内記錄的方法的調用時間細節。

線程視圖 Thread Views

JProfiler通過對線程曆史的監控判斷其運作狀态,并監控是否有線程阻塞産生,還能将一個線程所管理的方法以樹狀形式呈現。對線程剖析,JProfiler提供以下視圖:

線程曆史 Thread History

顯示一個與線程活動和線程狀态在一起的活動時間表。

線程監控 Thread Monitor

顯示一個清單,包括所有的活動線程以及它們目前的活動狀況。

線程轉儲 Thread Dumps

顯示所有線程的堆棧跟蹤。

監控器視圖 Monitor Views

JProfiler提供了不同的監控器視圖,如下所示:

目前鎖定圖表 Current Locking Graph

顯示JVM中的目前鎖定情況。

目前螢幕 Current Monitors

顯示目前正在等待或阻塞中的線程操作。

鎖定曆史圖表 Locking History Graph

顯示記錄在JVM中的鎖定曆史。

監控器曆史 Monitor History

顯示等待或者阻塞的曆史。

監控器使用統計 Monitor Usage Statistics

計算統計監控器監控的資料。

VM遙感勘測技術視圖 VM Telemetry Views

觀察JVM的内部狀态,JProfiler提供了不同的遙感勘測視圖,如下所示:

記憶體 Memory

顯示堆棧的使用狀況和堆棧尺寸大小活動時間表。

記錄的對象 Recorded Objects

顯示一張關于活動對象與數組的圖表的活動時間表。

記錄的生産量 Recorded Throughput

顯示一段時間累計的JVM生産和釋放的活動時間表。

垃圾回收活動 GC Activity

顯示一張關于垃圾回收活動的活動時間表。

顯示一個與已裝載類的圖表的活動時間表。

線程 Threads

顯示一個與動态線程圖表的活動時間表。

CPU負載 CPU Load

顯示一段時間中CPU的負載圖表。

參考