該視圖專一於對象的內存分配狀況,包含如下選項卡:java
All Objects | 顯示堆中實時的對象狀況:顯示某種類型(聚合級別能夠是類、包等)對象的數量(Instance Count)、淺尺寸(Shallow size)關於淺尺寸的計算:
注意,有些對象雖然沒有引用,可是可能沒被GC回收,能夠手工Run GCgit 右擊某一類型,能夠轉到Class Tracker或者Heaper Walker視圖github |
Recorded Objects | 顯示已經進行記錄的對象。與All Objects相比,能夠查看對象分配調用樹(Allocation Call Tree)、分配熱點(Allocation Hot Sports)點擊工具欄:Start Memory,能夠錄製對象分配 |
Allocation Call Tree | 顯示選中的、已錄製對象類型的分配調用數,分析調用棧的哪些棧幀比較消耗資源。從線程執行開始處,一直追溯到對象被建立的地方,對象佔用內存的大小被顯示,效果以下圖: |
Allocation Hot Sports | 顯示選中的、已錄製對象類型的分配熱點:以建立對象的方法爲根顯示調用樹,效果以下圖: |
Class Tracker | 顯示選中類型對象的實例個數的曲線圖(按時間) |
該視圖用於靜態分析堆快照,在生成快照以前,會進行一次Full GC。包含如下選項卡:算法
Classes | 相似於Memory Views的All Objects,能夠顯示快照中全部對象的數量、大小。右擊選擇Use Selected Instances,則能夠顯示單種類型的數據 |
Allocations | 分析對象分配狀況:包括4種顯示方式:Cumulated Allocation Tree:累積調用樹,顯示對象分配調用樹,包含對象sizeAllocation Tree:調用樹,顯示對象分配調用樹,包含對象sizeAllocation Tree Map:以Tree Map形式顯示調用樹Allocation Hot spots:顯示分配對象最多的方法 |
Biggest Objects | 顯示佔用內存最多的對象 |
References | 顯示單種類型的引用狀況包含4種顯示方式:Incoming references:其它對象對每個選中對象的引用Outcoming references:每個選中對象對其它對象的引用Cumulated Incoming references:顯示其它對象、字段對選中對象類型的整體引用統計Cumulated Outcoming references:顯示選中對象類型對其它對象、字段的整體引用統計 |
Time | 分析對象分配的消耗時間 |
Inspections | 提供多種精細的對象分配分析方式 |
Graph | 圖形化方式顯示對象的引用圖 |
該視圖用於分析方法的CPU佔用時間,包括如下選項卡:windows
Call Tree | 顯示自頂而下的調用堆棧的樹,樹的根是線程開始處,樹的分叉表示的不一樣的調用路徑。暗紅色顯示當前節點及其子節點消耗的時間、高亮紅色顯示本級節點消耗的時間。
顯示未過濾類對過濾類的直接調用,不顯示深刻的調用,在被過濾類的左上角顯示紅三角。main方法、線程的run方法老是顯示,不予過濾。
經過Profiling Settings能夠選擇CPU時間的度量方式:Elapsed time/Estimated CPU time,前者爲Wall clock time(物理世界真實時間),後者爲佔用CPU的時間。因爲操做系統的固有限制,10ms如下的時間可能不具備統計學意義。
界面右上角的Thread Status用於選擇參與分析的線程狀態,一般選擇Runnable來分析性能問題,有時能夠結合Net I/O、Blocked
工具欄Start Tracking,能夠追蹤某些任務在不一樣線程之間的傳遞(調用點/執行點Call site/Execution site)
效果以下圖: |
Hot Spots | 顯示耗時最高的方法調用,顯示消耗時間、平均消耗時間、調用次數等字段,以耗時方法爲根,能夠追溯到線程啓動處Filtered Classes設置:選擇被過濾類佔用時間,能夠單獨列出,或者算在調用它的元素上(main、線程run不能過濾) 每一個方法可能被多個調用棧調用,百分比顯示不一樣調用棧對此方法的固有時間的「貢獻」 不顯示Total time,只顯示Inherent Time |
Call Graph | 顯示方法調用的序列,包括某個方法的調用與被調用狀況 |
Method Stat | 點擊工具欄圖標,能夠錄製方法的統計信息並進行分析 |
Call Tracer | 點擊工具欄圖標,能夠對方法調用進行跟蹤 |
該視圖用於分析線程的狀態和歷史分析、檢測死鎖,並能夠獲取線程快照,包含如下選項卡:服務器
Thread History | 線程狀態時間線,能夠選擇顯示活着的或者死去的線程
綠色:Runnable:表示線程能夠接受CPU調度,但不必定正在佔用CPU,和線程優先級、調度算法、系統負載有關
黃色:Waiting:表示線程正在睡眠(java.lang.Thread.Sleep),或者在監視器上等待(java.lang.Object.wait),前者不會放棄佔有的監視器
紅色:Blocked:表示線程被阻塞,正在積極嘗試進入同步區
淺藍色:Net I/O:線程正在等待網絡操做的完成,監聽Socket或者讀寫Socket時產生此狀態
效果圖以下:
|
Thread Monitor | 顯示線程的開始結束時間、父線程、狀態等信息 |
Thread Dumps | 獲取線程快照,能夠分析瞬時系統各線程的調用棧 |
該視圖用於鎖狀態檢測,包含如下選項卡:網絡
Current Locking Graph | 當前鎖狀態圖,顯示監視器、以及在監視器上等待的線程。
黑色箭頭表示當前擁有此監視器的線程app 紅色虛線表示被阻塞的線程(積極嘗試得到鎖)工具 黃色箭頭表示在監視器上等待的線程(java.lang.Object.wait) 效果圖以下: |
Current Monitors | 顯示當前活動的監視器,包括監視器狀態、監視器類、等待線程、擁有者線程等信息 |
Locking History Graph | 能夠錄製監視器鎖定的歷史 |
Monitor History | 能夠顯示全部監視器的歷史 |
Monitor Usage Stat | 以監視器、線程等方式分組,顯示監視器的使用統計,包括阻塞次數、阻塞持續時間、等待次數、等待持續時間等 |
該視圖能夠顯示時間線上的系統宏觀信息,包括如下選項卡:
Memory | 顯示已有、空閒內存的區域圖 |
Recorded Objects | 顯示堆中對象(數組、非數組)的數量 |
Recorded Throughput | 顯示已記錄對象的建立和銷燬數量 |
GC Activity | 顯示GC活動率百分比 |
Classes | 顯示加載的類的數量 |
Threads | 顯示處於各類狀態的線程的數量 |
CPU Load | 顯示CPU負載百分比 |
能夠使用多種探針來檢測不一樣的應用領域,包括:JDBC、JPA/Hibernate、JNDI、JMS、Servlet、RMI、Socket、WebServices、Files等。
用於在特定條件下觸發剖析動做
觸發條件:方法被調用、堆使用閾值、CPU使用率閾值、內存溢出異常、定時器、虛擬機啓動、虛擬機關閉等
剖析動做:啓/停錄製、調用跟蹤、監視器跟蹤,觸發堆dump、線程dump,啓/停探針錄製,保存快照,保存HPROF快照,運行腳本等
使用場景:腳本啓動剖析、按期快照保存、剖析遠程服務器
1
2
3
4
|
java
"-agentpath:D:\JavaEE\jprofiler\7.2.2\bin\windows-x64\jprofilerti.dll=offline,id=109,config=D:\JavaEE\Config\jprofiler-offline.xml"
"-Xbootclasspath/a:D:\JavaEE\jprofiler\7.2.2\\bin\agent.jar"
-classpath myapp.jar cc.gmem.demo.MyApp
|