整合到Eclipse,
(執行整合前,先關閉Eclipse)
主菜單–> Session –>IDE Intergrations –>選擇Eclipse (某版本)
執行“Integrate” ,選擇Eclipse所在的檔案夾。如:D:\Java\eclipse
4 以D:\eclipse\eclipse.exe –clean 方式啟動eclipse(目的是清除外掛程式緩衝,僅需第一次加此參數)
5.在Eclipse裡配置JProfiler.
主菜單–>Window–>Customize Perspective –>Commands –>找到Profile ,
選中它,再點OK即可。
2 配置tomcat項目並啟用監控
假設你手頭上有個項目是要發布在tomcat伺服器上的,例如筆者手頭上的項目名稱是DSPMSU_For_Display,tomcat伺服器是7.x版本,下面我們講解如何對這個本地的tomcat7伺服器進行監控,細節如下:
點擊Session→Integration Wizards→New Server Integration→Apache Tomcat 7.x→On this computer→勾選你的JVM資訊→Waif for a connection from the JProfiler GUI(就是由JProfiler幫你啟動tomcat)→選著你的startup.bat→保持預設連接埠8849→啟動。
tips:
1. 你在JProfiler中儲存的這個session,如果你雙擊運行它,它的實質也是去調用startup.bat來啟動,因此假如你已經手動啟用了tomcat然後又在JProfiler啟動這個session,這時候就會報錯--連接埠被佔用;
2. 監控過程中,假如tomcat意外關閉,這時候會報下面這樣一個錯誤,錯誤提示你要勾選"Keep VM alive",在Start Center編輯你儲存的session→Profiling Settings選項卡→Customize Profiling Settings→Miscellaneous→Keep VM alive即可。
3.如何監控效能
3.1 直觀認識
這麼強大的一個工具,怎樣效能監控呢。這個課題太大,我們把範圍縮小一點,如何入門呢。偶然在CSDN上找到一位blogger的博文,裡面的“實戰”例子絕對可以讓你對效能監控有一個直觀的認識。
請先花幾分鐘看看這篇博文:JProfiler學習筆記
.
.
.
.
.
.
.
幾分鐘很快就過去了,讓我們做以下幾個總結:
1. 在Memory Views視圖裡右擊相關類,選中Mark Current Values可以標記當前值,方便後續進行比較,注意綠色和紅色之分;
標記完之後,通過GUI介面可以很方便的看出值的變化情況
2. 按F4或者點擊表單上面的綠色表徵圖Run GC可以通知JVM進行記憶體回收的動作(只是通知,不是強制回收);
3. 在Memory Views視圖裡右擊相關類,點選Show Selection In Heap Walker可以進行堆記憶體跟蹤;
4. 在Heap Walker視圖中右擊相關類,點選Used Selected Instances→Allocation Tree可以看到關於該類的調用細節和記憶體使用量情況。
Allocation tree看的是調用樹,你也可以根據需要選擇其他選項。
3.2 模組介紹
模組的介紹主要是對JProfiler的具體功能進行介紹,部分內容參照自部落格:JProfiler 解決 Java 伺服器的效能跟蹤,如果讀者英文閱讀能力比較強也可以在工具列上邊點擊Help,直接閱讀英文協助,下文部分內容亦是參照自英文API。
3.2.1 記憶體視圖 Memory Views
JProfiler的記憶體視圖部分可以提供動態記憶體使用量狀況更新視圖和顯示關於記憶體配置狀況資訊的視圖。所有的視圖都有幾個聚集層並且能夠顯示現有存在的對象和作為記憶體回收的對象。
所有對象 All Objects
顯示類或在狀況統計和尺碼資訊堆上所有對象的包。你可以標記當前值並顯示差異值。 記錄對象 Record Objects
顯示類或所有已記錄對象的包。你可以標記出當前值並且顯示差異值。 分配訪問樹 Allocation Call Tree
顯示一棵請求樹或者方法、類、包或對已選擇類有帶注釋的分配資訊的J2EE組件。 分配熱點 Allocation Hot Spots
顯示一個列表,包括方法、類、包或分配已選類的J2EE組件。你可以標註當前值並且顯示差異值。對於每個熱點都可以顯示它的追蹤記錄樹。 類追蹤器 Class Tracker
類跟蹤視圖可以包含任意數量的圖表,顯示選定的類和包的執行個體與時間。 3.2.2 堆遍曆 Heap Walker
在JProfiler的堆遍曆器(Heap Walker)中,你可以對堆的狀況進行快照並且可以通過選擇步驟下尋找感興趣的對象。堆遍曆器有五個視圖:
類 Classes
顯示所有類和它們的執行個體,可以右擊具體的類"Used Selected Instance"實現進一步跟蹤。 分配 Allocations
為所有記錄對象顯示分配樹和分配熱點。 索引 References
為單個對象和“顯示到記憶體回收根目錄的路徑”提供索引圖的顯示功能。還能提供合并輸入視圖和輸出視圖的功能。 時間 Time
顯示一個對已記錄對象的解決時間的柱狀圖。 檢查 Inspections
顯示了一個數量的操作,將分析當前對象集在某種條件下的子集,實質是一個篩選的過程。 圖表 Graph
你需要在references視圖和biggest視圖手動添加對象到圖表,它可以顯示對象的傳入和傳出引用,能方便的找到垃圾收集器根源。
tips:在工具列點擊"Go To Start"可以使堆記憶體重新計數,也就是回到初始狀態。
3.2.3 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
顯示一段時間內記錄的方法的調用時間細節。 3.2.4 線程視圖 Thread Views
JProfiler通過對線程曆史的監控判斷其運行狀態,並監控是否有線程阻塞產生,還能將一個線程所管理的方法以樹狀形式呈現。對線程剖析,JProfiler提供以下視圖:
線程曆史 Thread History
顯示一個與線程活動和線程狀態在一起的啟用時間表。 線程監控 Thread Monitor
顯示一個列表,包括所有的活動線程以及它們目前的活動狀況。 線程轉儲 Thread Dumps
顯示所有線程的堆疊追蹤。 3.2.5 監控器視圖 Monitor Views
JProfiler提供了不同的監控器視圖,如下所示:
當前鎖定圖表 Current Locking Graph
顯示JVM中的當前鎖定情況。 當前監視器 Current Monitors
顯示當前正在等待或阻塞中的線程操作。 鎖定歷史圖 Locking History Graph
顯示記錄在JVM中的鎖定曆史。 監控器曆史 Monitor History
顯示等待或者阻塞的曆史。 監控器使用統計 Monitor Usage Statistics
計算統計監控器監控的資料。 3.2.6 VM遙感勘測技術視圖 VM Telemetry Views
觀察JVM的內部狀態,JProfiler提供了不同的遙感勘測視圖,如下所示:
記憶體 Memory
顯示堆棧的使用狀況和堆棧尺寸大小啟用時間表。 記錄的對象 Recorded Objects
顯示一張關於使用中的物件與數組的圖表的啟用時間表。 記錄的生產量 Recorded Throughput
顯示一段時間累計的JVM生產和釋放的啟用時間表。 記憶體回收活動 GC Activity
顯示一張關於記憶體回收活動的啟用時間表。 類 Classes
顯示一個與已裝載類的圖表的啟用時間表。 線程 Threads
顯示一個與動態線程圖表的啟用時間表。 CPU負載 CPU Load
顯示一段時間中CPU的負載圖表。 3.3 使用心得 3.3.1 看記憶體配置圖
Key 1,把目光集中到上圖的藍色部分,可以發現每次記憶體上升到一個峰值之後便會下跌,這個動作其實就是GC在回收記憶體,並且上升和回收的幅度大抵相同,如果你發現記憶體配置圖中可用記憶體隨著時間的流逝一直在上升而沒有GC回收的動作,那麼你就要懷疑它是否存在著記憶體泄露了;
Key 2,當你懷疑記憶體泄露時,可以在Memory Views視圖Mark Current Values,然後在一段時間後F4,找出那個沒有被釋放掉的異常類對其進行深一步的追蹤;
Key 3,追蹤主要使用Heap Walker的各項功能,各功能具體能做何種分析請複習章節