1、簡介linux
JProfiler是一款Java的性能監控工具。能夠查看當前應用的對象、對象引用、內存、CPU使用狀況,線程運行狀況(阻塞、等待等),同時能夠查找哪一個對象佔用的內存比較多、哪一個對象佔用CPU處理的時間比較多數組
2、配置tomcat
經過JProfiler遠程鏈接服務器監控JVM,須要在被監控的服務器上tomcat的啓動文件catalina.sh中加入如下配置:服務器
JAVA_OPTS="-agentpath:/usr/local/jprofiler7/bin/linux-x86/libjprofilerti.so=port=8849,nowait"
其中:/usr/local/jprofilter7爲Linux服務器上JProfilter的安裝路徑工具
linux-x86表明Linux操做系統是32位的,若是是64位的則要寫linux-x64性能
nowait表明不須要連上JProfilter也可以啓動Linux服務器上的tomcat,不然只有等window客戶端連上之後才能啓動直到超時優化
3、功能介紹spa
一、內存剖析 Memory Views操作系統
![](http://static.javashuo.com/static/loading.gif)
JProfiler 的內存視圖部分能夠提供動態的內存使用情況更新視圖和顯示關於內存分配情況信息的視圖。全部的視圖都有幾個彙集層而且可以顯示現有存在的對象和做爲垃圾回收的對象。線程
- 全部對象 All Objects
顯示類或在情況統計和尺碼信息堆上全部對象的包。你能夠標記當前值並顯示差別值。
- 記錄對象 Record Objects
顯示類或全部已記錄對象的包。你能夠標記出當前值而且顯示差別值。
- 分配訪問樹 Allocation call tree
顯示一棵請求樹或者方法、類、包或對已選擇類有帶註釋的分配信息的J2EE組件。
- 分配熱點 Allocation hot spots
顯示一個列表,包括方法、類、包或分配已選類的J2EE組件。你能夠標註當前值而且顯示差別值。對於每一個熱點均可以顯示它的跟蹤記錄樹。
二、堆遍歷 Heap Walker
![](http://static.javashuo.com/static/loading.gif)
在JProfiler的堆遍歷器(Heap walker)中,你能夠對堆的情況進行快照而且能夠經過選擇步驟下尋找感興趣的對象。堆遍歷器有五個視圖:
- 類 Classes
顯示全部類和它們的實例。
- 分配 Allocations
爲全部記錄對象顯示分配樹和分配熱點。
- 索引 References
爲單個對象和「顯示到垃圾回收根目錄的路徑」提供索引圖的顯示功能。還能提供合併輸入視圖和輸出視圖的功能。
- 數據 Data
爲單個對象顯示實例和類數據。
- 時間 Time
顯示一個對已記錄對象的解決時間的柱狀圖。
三、CPU 剖析 CPU Views
![](http://static.javashuo.com/static/loading.gif)
JProfiler 提供不一樣的方法來記錄訪問樹以優化性能和細節。線程或者線程組以及線程情況能夠被全部的視圖選擇。全部的視圖均可以彙集到方法、類、包或J2EE組件等不一樣層上。CPU視圖部分包括:
- 訪問樹 Call tree
顯示一個積累的自頂向下的樹,樹中包含全部在JVM中已記錄的訪問隊列。JDBC,JMS和JNDI服務請求都被註釋在請求樹中。請求樹能夠根據Servlet和JSP對URL的不一樣須要進行拆分。
- 熱點 Hot spots
顯示消耗時間最多的方法的列表。對每一個熱點都可以顯示回溯樹。該熱點能夠按照方法請求,JDBC,JMS和JNDI服務請求以及按照URL請求來進行計算。
- 訪問圖 Call graph
顯示一個從已選方法、類、包或J2EE組件開始的訪問隊列的圖。
四、線程剖析 Thread Views
![](http://static.javashuo.com/static/loading.gif)
對線程剖析,JProfiler提供如下視圖:
- 線程歷史 Thread history
顯示一個與線程活動和線程狀態在一塊兒的活動時間表。
- 線程監控 Thread monitor
顯示一個列表,包括全部的活動線程以及它們目前的活動情況。
- 死鎖探測圖表 Deadlock Detection
顯示一個包含了全部在JVM裏的死鎖圖表。
- 目前使用的監測器 Current monitor useage
顯示目前使用的監測器而且包括它們的關聯線程。
- 歷史檢測記錄 History usage history
顯示重大的等待事件和阻塞事件的歷史記錄。
- 監測使用狀態 Monitor usage statistics
顯示分組監測,線程和監測類的統計監測數據。
五、VM 遙感勘測技術 VM Telemetry Views
![](http://static.javashuo.com/static/loading.gif)
觀察JVM的內部狀態,JProfiler提供了不一樣的遙感勘測視圖
- 堆 Heap
顯示一個堆的使用情況和堆尺寸大小活動時間表。
- 記錄的對象 Recorded objects
顯示一張關於活動對象與數組的圖表的活動時間表。
- 垃圾回收 Garbage collector
顯示一張關於垃圾回收活動的活動時間表。
- 類 Classes
顯示一個與已裝載類的圖表的活動時間表。
- 線程 Threads顯示一個與動態線程圖表的活動時間表。