JProfiler是一款電腦JVM監(jiān)控工具,該軟件能對JAVA進行多樣全面的分析,界面直觀使用簡單,能查找多個不同內(nèi)容進行剖析,專業(yè)高效,讓你輕松管控。
軟件介紹
JProfiler(java分析軟件)官方版是款功能十分全面、簡單易操作的Java剖析工具(profiler),JProfiler(java分析軟件)官方版頁面簡潔美觀、極易上手。JProfiler(java分析軟件)最新版專用于分析J2SE和J2EE應(yīng)用程序。JProfiler直覺式的GUI讓你可以找到效能瓶頸、抓出內(nèi)存漏失(memory leaks)、并解決執(zhí)行緒的問題。
JProfiler 是一個全功能的Java剖析工具(profiler),專用于分析J2SE和J2EE應(yīng)用程序。JProfiler直覺式的GUI讓你可以找到效能瓶頸、抓出內(nèi)存漏失(memory leaks)、并解決執(zhí)行緒的問題。它把CPU、執(zhí)行緒和內(nèi)存的剖析組合在一個強大的應(yīng)用中。
軟件特色
本地會話實時分析模式
用戶一旦定義好了其應(yīng)用程序啟動方式,JProfiler即能對之進行設(shè)置,用戶即刻便能從設(shè)置好的JVM中看到實時數(shù)據(jù)。用戶若不想進行會話配置,其可以從多個IDE插件中選擇其最喜歡的那個對應(yīng)用程序進行配置。
遠程會話實時分析模式
通過修改Java開始命令行方式的VM參數(shù),用戶可使任意Java應(yīng)用程序監(jiān)聽來自的JProfiler GUI的連接。該設(shè)置程序不但可以在本地計算機上運行,還可以在網(wǎng)絡(luò)中作為某個設(shè)置程序的附加程序使用。此外,JProfiler還提供了相當多的集成向?qū)?,可用于主流的可以幫助用戶安裝和設(shè)置其應(yīng)用程序的應(yīng)用程序服務(wù)器。
離線分析模式
用戶無需通過JProfiler GUI連接應(yīng)用程序即可對之進行設(shè)置。在離線設(shè)置模式下,用戶可以使用功能強大的JProfiler觸發(fā)系統(tǒng)或者JProfiler' API對設(shè)置代理進行控制,然后將快照保存入磁盤。稍后用戶便可使用命令行導(dǎo)出工具或者螞蟻任務(wù)導(dǎo)出工具,在JProfiler GUI或編程方式的設(shè)置導(dǎo)出視圖中打開這些快照。
快照比較
在JProfiler中,用戶可以將當前的所有設(shè)置數(shù)據(jù)保存為一個快照存入磁盤中。JProfiler提供了豐富的比較功能以對比兩個或者多個快照之間的不同。用戶可從編程的命令行比較工具和ant task比較工具中選擇其一創(chuàng)建對比報告。
查看HPROF快照
JProfiler能打開用JVM工具(比如jconsole、 jmap或通過-XX:+HeapDumpOnOutOfMemoryError JVM參數(shù)觸發(fā))創(chuàng)建的HPROF快照文件
軟件功能
1.內(nèi)存剖析 Memory profiler
JProfiler 的內(nèi)存視圖部分可以提供動態(tài)的內(nèi)存使用狀況更新視圖和顯示關(guān)于內(nèi)存分配狀況信息的視圖。所有的視圖都有幾個聚集層并且能夠顯示現(xiàn)有存在的對象和作為垃圾回收的對象。
所有對象
顯示類或在狀況統(tǒng)計和尺碼信息堆上所有對象的包。你可以標記當前值并顯示差異值。
記錄對象 Record objects
顯示類或所有已記錄對象的包。你可以標記出當前值并且顯示差異值。
分配訪問樹 Allocation call tree
顯示一棵請求樹或者方法、類、包或?qū)σ堰x擇類有帶注釋的分配信息的J2EE組件。
分配熱點 Allocation hot spots
顯示一個列表,包括方法、類、包或分配已選類的J2EE組件。你可以標注當前值并且顯示差異值。對于每個熱點都可以顯示它的跟蹤記錄樹。
2.堆遍歷 Heap walker
在JProfiler的堆遍歷器(Heap walker)中,你可以對堆的狀況進行快照并且可以通過選擇步驟下尋找感興趣的對象。堆遍歷器有五個視圖:
為單個對象和“顯示到垃圾回收根目錄的路徑”提供索引圖的顯示功能。還能提供合并輸入視圖和輸出視圖的功能。
顯示一個對已記錄對象的解決時間的柱狀圖。
3. CPU 剖析 CPU profiler
JProfiler 提供不同的方法來記錄訪問樹以優(yōu)化性能和細節(jié)。線程或者線程組以及線程狀況可以被所有的視圖選擇。所有的視圖都可以聚集到方法、類、包或J2EE組件等不同層上。CPU視圖部分包括:
顯示一個積累的自頂向下的樹,樹中包含所有在JVM中已記錄的訪問隊列。JDBC,JMS和JNDI服務(wù)請求都被注釋在請求樹中。請求樹可以根據(jù)Servlet和JSP對URL的不同需要進行拆分。
顯示消耗時間最多的方法的列表。對每個熱點都能夠顯示回溯樹。該熱點可以按照方法請求,JDBC,JMS和JNDI服務(wù)請求以及按照URL請求來進行計算。
軟件亮點
卓越的易用性
Profiler簡單而強大,同時它的配置會話是直接的,第三方集成使得開始輕松,分析數(shù)據(jù)以自然的方式呈現(xiàn)。在各個層次上,JProfiler經(jīng)過精心設(shè)計,可以幫助您開始解決問題。
JDBC、JPA和NOSQL的數(shù)據(jù)庫分析
JProfiler的JDBC和JPA/Hibernate探測器以及MongoDB,Cassandra和HBase的NoSQL探測器顯示了數(shù)據(jù)庫訪問緩慢以及代碼緩慢的語句調(diào)用原因。從JDBC時間線視圖顯示所有與其活動的JDBC連接,通過熱點視圖,顯示各種遙測視圖的慢速語句和單個事件列表,數(shù)據(jù)庫探針是深入了解數(shù)據(jù)庫層的重要工具。
極好的支持JAVA企業(yè)版
在JProfiler中的大多數(shù)視圖中存在JEE的專用支持。例如,在JEE聚合級別中,您可以根據(jù)應(yīng)用程序中的JEE組件看到調(diào)用樹。另外,每個請求URI都會分配調(diào)用樹。此外,JProfiler在低級別分析數(shù)據(jù)之上添加了語義層,如在CPU分析視圖中呈現(xiàn)的JDBC,JPA/Hibernate,JMS和JNDI調(diào)用。憑借其JEE支持,JProfiler彌合了代碼分析器和高級JEE監(jiān)視工具之間的差距。
更高級別的分析數(shù)據(jù)
JProfiler有許多探針可以顯示JRE中有趣子系統(tǒng)的更高級別的數(shù)據(jù)。除了JavaEE子系統(tǒng),如JDBC,JPA/Hibernate,JSP/Servlets,JMS,Web服務(wù)和JNDI之外,JProfiler還提供了有關(guān)RMI調(diào)用,文件,套接字和進程的高級信息。這些探針中的每一個都有自己的一組有用的視圖。所有這些視圖也可用于您可以在JProfiler中即時配置的自定義探針。
內(nèi)存泄漏分析
JProfiler的堆步行器為您提供了一個直觀的界面來解決簡單和復(fù)雜的內(nèi)存問題。5個不同的視圖和大量的檢查顯示當前對象集的不同方面。每個視圖都提供對所選對象的基本見解,并允許您切換到不同的對象集。
廣泛的質(zhì)量保證能力
快照的豐富功能可以輕松跟蹤進度。JProfiler對命令行操作有很強的支持。這包括配置,導(dǎo)出快照數(shù)據(jù)和從命令行創(chuàng)建快照比較的功能。與JProfiler綁定的ant任務(wù)允許您從構(gòu)建腳本執(zhí)行所有命令行操作。
最廣泛的支持平臺,IDE和應(yīng)用服務(wù)器
集成到所有流行的IDE中,使開發(fā)過程中的分析與運行應(yīng)用程序一樣簡單。并且市場上幾乎所有應(yīng)用服務(wù)器的大量集成向?qū)Т_保您可以開始點擊幾次,而不是閱讀文檔。
低開銷
JProfiler只在需要時記錄數(shù)據(jù)。實際上,您可以使用JProfiler代理啟動應(yīng)用程序,并在以后連接JProfilerGUI。當您不記錄任何數(shù)據(jù)時,開銷非常小。JProfiler顯示您的性能分析設(shè)置如何影響性能,并為您提供模板以快速選擇常見用例的性能分析設(shè)置。
強大的CPU分析器
修復(fù)性能瓶頸是分析器最常用的用例。使用JProfiler,當您嘗試找到問題的原因時,您將具有決定性的優(yōu)勢。調(diào)用樹視圖過濾器,聚合級別和線程狀態(tài)選擇器只是JProfiler在此領(lǐng)域的多功能性的一些示例。
集成螺紋輪廓儀
使用JProfiler可以解決一系列不透明的問題,例如在使用過多鎖定的多線程應(yīng)用程序中增加活動性。線程分析不僅在JProfiler中有一個單獨的視圖部分,它也被緊密地集成到CPU分析視圖中。
使用教程
JProfiler的使用比較難,尤其是沒有中文化語言的話,入門起來比較困難,所以小編這里帶來基礎(chǔ)教程,首先學(xué)會最簡單的使用方法,才能逐漸精進,那么請看下面的教程吧:
1. 點擊jprofiler.exe
2. 執(zhí)行菜單SessionàIntegration WizardsàNew ServerIntegration
選擇是本地測試還是遠程測試:
選擇tomcat運行的腳本文件:
選擇虛擬機的類型:
選擇監(jiān)控端口:
用默認的即可
選擇Web容器是否和Jprofiler一起運行:
默認即可
配置提示:
在“遠程控制”的時侯要仔細閱讀一下。
然后選擇立即起動,開始運行。
點擊“OK”,我們可以看到另外一個小窗口出來了:
Jprofiler的窗口為:
這樣我們就可以進行監(jiān)控了!
怎么看內(nèi)存問題
JProfiler對于內(nèi)存溢出的監(jiān)控功能非常實用,可以很好的對內(nèi)存問題進行分析預(yù)警,用戶能更加放心的使用,那么怎么才能對JProfiler進行設(shè)置來查看內(nèi)存問題呢?下面的教程能讓你輕松學(xué)會。
1. 初始化檢驗環(huán)境:
切換到“Live Memory-->All Objects”標簽,可以看到當前tomcat中的對象情況,注意jprofiler其他版本可能位置不一樣.
在執(zhí)行操作前,需要先F4,運行“Run GC”,使jvm進行內(nèi)存回收清理無效的對象.為了便于比較內(nèi)存的增長情況,可以點擊右鍵--->"Mark Current",
來將當前內(nèi)存使用情況作為參照;點擊后會顯示“Difference”列,該列會列出對象數(shù)量的變化和變化比率
2.打開內(nèi)存記錄:
點擊“Start Recordings”按鈕,開始記錄。執(zhí)行這步的主要目的是為下面“Heap Walker”設(shè)置一個監(jiān)控區(qū)間;如果不記錄的話“Heap Walker”將分析jvm虛擬機的所有內(nèi)存,即耗時又不能準確的發(fā)現(xiàn)內(nèi)存泄漏的原因。
3. 執(zhí)行操作,執(zhí)行g(shù)c;
使用壓力工具訪問被測應(yīng)用,執(zhí)行完之后再次F4進行GC----這樣是為了消除可以回收的對象。執(zhí)行內(nèi)存回收后,仍然存在于內(nèi)存中的對象有可能是泄漏的對象。如下圖instance count中紅色的部門為不能回收的對象,difference列列出了增加的對象數(shù)量和增。以String為例,在該操作中增加了31751個對象增幅達到了14%,隨后會在HeapWalker中觀察這些對象,分析哪些對象是泄漏的。一般引起泄漏的對象包括:String、char[]、HashMap、Concurrenthashmap等,這類對象需要重點關(guān)注下;
4. 關(guān)閉內(nèi)存記錄:
點擊“Stop Recordings”關(guān)閉內(nèi)存記錄,告訴jProfiler把這段記錄作為分析對象;
5. 找到增加迅速的對象類型,打開HeapWalker:
在視圖中找到增長快速的對象類型,本例Concurrenthashmap的增長速度很快。在memory視圖中找到Concurrenthashmap---點右鍵----選擇“Show Selectiion In Heap Walker”,切換到HeapWarker 視圖;切換前會彈出選項頁面,注意一定要選擇“Select recorded objects”,這樣Heap Walker會在剛剛的那段記錄中進行分析;否則,會分析tomcat的所有內(nèi)存對象,這樣既耗時又不準確;
6. 在HeapWalker中,找到泄漏的對象;
HeapWarker 會分析內(nèi)存中的所有對象,包括對象的引用、創(chuàng)建、大小和數(shù)量;
HeapWarker視圖下方可以進行頁面切換:
通過切換到References頁簽,可以看到這個類的具體對象實例。
為了在這些內(nèi)存對象中,找到泄漏的對象(應(yīng)該被回收),可以在該對象上點擊右鍵,選擇“Use Selected Instances”縮小對象范圍;
單擊OK按鈕
7. 通過引用分析該對象:
在References引用頁簽中,可以看到該對象的的引用關(guān)系,可以切換incoming/outcoming,顯示引用的類型:
incoming 表示顯示這個對象被誰引用;
outcoming 表示顯示這個對象引用的其他對象;
選擇“Show In Graph”將引用關(guān)系使用圖形方式展現(xiàn);
選中該對象,點擊“Show Paths To GC Root”,會找到引用的根節(jié)點;
在上圖中,我們可以發(fā)現(xiàn),這個HashMap Segment對象最終的引用是在ConcurrentHashMap和ReentranLock對象中;
8. 通過創(chuàng)建分析該對象:
如果第7步還不能定位內(nèi)存泄露的地方,我們可以嘗試使用Allocations頁簽,該頁簽顯示對象是如何創(chuàng)建出來的;
我們可以從創(chuàng)建方法開始檢查,檢查所有用到該對象的地方,直到找到泄漏位置;
怎么連遠程服務(wù)
連接遠程服務(wù)能更好的查看和監(jiān)控遠端服務(wù)器,JProfiler想要連接遠程服務(wù)需要經(jīng)過一些操作,需要進行連接的用戶,可以查看下面的使用方法學(xué)會:
服務(wù)端
1.找到本地Tomcat的bin目錄下剛才連接本地tomcat生成的兩個JproFiler文件:
startup_jprofiler.bat ; startup_jprofiler.sh
把startup_jprofiler.sh文件移動到遠程服務(wù)器端的Tomca的bin目錄下
2.載遠程服務(wù)端的linux命令窗口進入tomca/bin目錄下,然后運行startup_jprofiler.sh文件。(在之前記得service ipatbles stop來停止防火墻)
3.如果出現(xiàn)下圖代碼行就說明遠程啟動Jprofiler成功
客戶端
1.新建一個session
2.選擇遠程tomcat版本
3.選擇遠程服務(wù)器,系統(tǒng)選擇linux
4.選擇遠程端的JDk版本號
5.選擇next,再出現(xiàn)的頁面填寫遠程服務(wù)器的IP:
6.選擇遠程服務(wù)器jprofiler的安裝路徑:
7.選擇本地Tomcat的startup.sh的執(zhí)行路徑:
8.然后點擊選擇默認端口,Yes馬上啟動
9.出現(xiàn)正在連接...
10.選擇Ok
11.然后遠程連接成功:
注意:如果遠程服務(wù)器連接失敗,請重啟服務(wù)器,再次連接,就OK!
更新內(nèi)容
一、使用腳本探針,您可以直接在JProfiler UI中定義有效載荷探測器。它們?nèi)〈伺f的自定義探頭,并且配置起來更容易。對于每個方法攔截,您可以配置一個腳本,將攔截的有效負載作為字符串返回。
調(diào)用樹的上下文菜單包含一個操作,可以很容易地為腳本探測器選擇截取的方法。
每個腳本探針在“JEE&probes”部分添加一個新視圖,其中包含有效負載熱點,默認遙測和探測事件視圖。
一個搖籃插件已被添加。Gradle插件是從Gradle插件門戶加載的,但不包括JProfiler發(fā)行版。要使用任何JProfiler Gradle任務(wù),請使用開始構(gòu)建腳本
插件{ id'com.jprofiler'version'XYZ'}jprofiler { installDir = file('/ path / to / jprofiler / home')}
使用分析任務(wù)和包含觸發(fā)器的預(yù)配置會話,您可以在構(gòu)建過程中自動執(zhí)行分析會話:
任務(wù)運行(鍵入:com.jprofiler.gradle.JavaProfile){ main ='com.mycorp.MyMainClass' classpath sourceSets.main.runtimeClasspath offline = true sessionId = 80 configFile = file('config / config.xml')}
還有命令行導(dǎo)出和命令行比較的任務(wù),以及使用堆轉(zhuǎn)儲預(yù)先分析快照。
二、堆棧中 的合并參考視圖已被重新實現(xiàn),現(xiàn)在更加可用和有用。視圖現(xiàn)在顯示每個節(jié)點上的引用持有者和引用對象,并使引用關(guān)系更清晰。
另外,引用可以按類而不是按字段進行分組。這是合并參考視圖的新默認模式。JProfiler中的緊湊型引用類型不直接支持的許多非標準集合類型會以這種方式自動折疊。
在合并的傳入?yún)⒖家晥D中的每個節(jié)點上,可以選擇當前對象集中以此方式引用的對象或特定節(jié)點的引用持有者。
三、一個合并的主導(dǎo)引用視圖已經(jīng)被添加到堆沃克。與合并的傳入引用不同,合并的控制引用顯示必須消除哪些引用才能使當前對象集中的部分或全部對象符合垃圾回收的條件。
在多個獨立GC根的情況下,當前對象集中的部分或全部對象可能無法通過支配引用來引用,因此視圖可能為空。合并的支配引用使用與最大對象視圖相同的數(shù)據(jù),因此引用可以是傳遞的,而不需要父節(jié)點和子節(jié)點之間的直接引用。
合并的支配參考視圖可以顯示當前對象組對GC根的引用,反之亦然。根據(jù)您要消除的引用是關(guān)閉當前對象集中的對象還是靠近GC根,一個或另一個模式更方便。
在堆棧中,最大對象視圖中的類和類加載器分組已添加。如果您擁有同一班級的許多最大對象,切換到班級分組以獲得更好的照片非常有用。
如果類加載器是您調(diào)查的重要方面,那么類加載器分組將幫助您找出最大對象的類來自何處。
四、在MongoDB的異步驅(qū)動器現(xiàn)在支持。在MongoDB探測中,代碼的異步執(zhí)行與觸發(fā)數(shù)據(jù)庫操作的堆棧跟蹤綁定在一起。是否使用同步或異步驅(qū)動程序由熱點以下的第一個節(jié)點或事件視圖中堆棧跟蹤的第一個節(jié)點指示。
五、一個探測器遙測概覽已添加,結(jié)合了探頭的所有遙測數(shù)據(jù)。就像標準VM遙測概述一樣,您可以點擊遙測名稱來顯示完整視圖。
六、節(jié)點詳細信息對話框中的快速搜索已實施。節(jié)點詳細信息對話框是探測負載字符串可能非常長的重要工具,例如JDBC視圖中的SQL語句。將鼠標移動到文本區(qū)域上時,快速搜索和將所有文本復(fù)制到剪貼板的操作變得可見。
七、JProfiler 9已經(jīng)支持Java 9的分析,但JProfiler UI和所有命令行工具現(xiàn)在可以在Java 9上運行。這對于JProfiler UI現(xiàn)在可以使用Java 9中的新HiDPI支持的Linux桌面尤其重要。
JProfiler大量使用直接在JProfiler中輸入的腳本?,F(xiàn)在您可以選擇Java 9 + JRE來編譯這些腳本。
另外,從該版本開始,可以使用 JProfiler支持的所有功能對Java 10進行概要分析。
標簽: java診斷 java分析 JVM監(jiān)控
下載地址
精品推薦
-
Microsoft .Net Framework4.7.2中文版
詳情 -
.Net3.5
詳情 -
.Net3.5 64位win10離線安裝包
詳情 -
MarkdownPad2
詳情 -
.Net Framework 4.0 32位離線安裝包
詳情 -
RPGVXACE RTP
詳情 -
Cmder(windows命令行工具)
詳情 -
jetbrains全系列激活工具
詳情 -
西瓜創(chuàng)客Python客戶端
詳情 -
scratch免激活離線版
詳情 -
鯨魚積木編程專業(yè)版
詳情 -
visual unit許可證破解補丁
詳情 -
Cameyo
詳情 -
Microsoft .Net Framework 4.0完整版
詳情 -
Scratch Link
詳情 -
微軟DirectX9.0c最終用戶運行庫
詳情
裝機必備軟件
網(wǎng)友評論