JProfiler is an award-winning all-in-one Java profiler. JProfiler's intuitive GUI helps you find performance bottlenecks, pin down memory leaks and resolve threading issues.
JProfiler為什么是最佳選擇?
JDBC,JPA和NOSQL的數(shù)據(jù)庫分析
數(shù)據(jù)庫調(diào)用是業(yè)務(wù)應(yīng)用程序中性能問題的主要原因。JProfiler的JDBC和JPA / Hibernate探針以及針對(duì)MongoDB,Cassandra和HBase的NoSQL探針顯示了數(shù)據(jù)庫訪問緩慢的原因以及代碼如何調(diào)用慢速語句。從向您顯示所有JDBC連接及其活動(dòng)的JDBC時(shí)間軸視圖,到向您顯示對(duì)各種遙測(cè)視圖的慢速語句和單個(gè)事件列表的熱點(diǎn)視圖,數(shù)據(jù)庫探針是了解數(shù)據(jù)庫層的重要工具。
對(duì)JAVA ENTERPRISE EDITION的出色支持
JProfiler的大多數(shù)視圖中都提供了對(duì)JEE的專門支持。例如,在JEE聚合級(jí)別中,您可以根據(jù)應(yīng)用程序中的JEE組件看到調(diào)用樹。另外,為每個(gè)請(qǐng)求URI劃分了調(diào)用樹。此外,JProfiler在低級(jí)分析數(shù)據(jù)的頂部添加了一個(gè)語義層,例如在CPU分析視圖中顯示的JDBC,JPA / Hibernate,JMS和JNDI調(diào)用。通過JEE支持,JProfiler彌合了代碼分析器和高級(jí)JEE監(jiān)視工具之間的鴻溝
更高級(jí)別的分析數(shù)據(jù)
JProfiler有許多探針,向您顯示JRE中有趣的子系統(tǒng)的高級(jí)數(shù)據(jù)。除了JDBC,JPA / Hibernate,JSP / Servlet,JMS,Web服務(wù)和JNDI等Java EE子系統(tǒng)外,JProfiler還提供有關(guān)RMI調(diào)用,文件,套接字和進(jìn)程的高級(jí)信息。這些探針中的每一個(gè)都有其自己的有用視圖集,這些視圖可為您提供一般的見解,突出性能問題并允許您跟蹤單個(gè)事件。而且,所有這些視圖也可用于您自己的自定義探針,您可以在JProfiler中動(dòng)態(tài)配置這些探針。
內(nèi)存泄漏的出色分析
如果沒有合適的工具,可能找不到內(nèi)存泄漏。JProfiler的堆遍歷器為您提供了一個(gè)直觀的界面來解決簡(jiǎn)單和復(fù)雜的內(nèi)存問題。5種不同的視圖和大量檢查顯示了當(dāng)前對(duì)象集的不同方面。每個(gè)視圖為您提供有關(guān)所選對(duì)象的基本見解,并允許您切換到不同的對(duì)象集。只需單擊一下鼠標(biāo)即可回答諸如為什么不進(jìn)行垃圾收集的問題之類的問題。
對(duì)平臺(tái),IDE和應(yīng)用程序服務(wù)器的最廣泛支持
JProfiler集成到您的環(huán)境中:我們提供適用于32位和64位JVM 的廣泛平臺(tái)的本機(jī)代理庫 。與 所有流行的IDE的集成 使開發(fā)過程中的性能分析與運(yùn)行應(yīng)用程序一樣容易。市場(chǎng)上幾乎所有應(yīng)用服務(wù)器的大量集成向?qū)Э纱_保您單擊幾下即可開始,而無需閱讀文檔。
集成的線程分析器
與線程相關(guān)的問題比人們想象的要頻繁得多。如果沒有線程事件探查器,則只有很少的機(jī)會(huì)來解決此類問題。使用JProfiler時(shí),可以解決其他各種不透明的問題,例如,在使用過多鎖定的多線程應(yīng)用程序中增加活動(dòng)性。線程分析不僅在JProfiler中具有單獨(dú)的視圖部分,而且還緊密集成到CPU分析視圖中。
工作模式
實(shí)時(shí)分析本地會(huì)話
一旦定義了應(yīng)用程序的啟動(dòng)方式,JProfiler便可以對(duì)其進(jìn)行概要分析,并且您將立即查看已概要分析的JVM中的實(shí)時(shí)數(shù)據(jù)。為了消除會(huì)話配置的需要,您可以使用許多IDE插件之一 從自己喜歡的IDE中對(duì)應(yīng)用程序進(jìn)行配置。
快照比較
在JProfiler中,可以將所有當(dāng)前概要分析數(shù)據(jù)的快照保存到磁盤。JProfiler提供了豐富的比較工具,可以查看兩個(gè)或更多快照之間發(fā)生了什么變化。或者,您可以使用命令行比較工具或比較ant任務(wù)以編程方式創(chuàng)建比較報(bào)告。
實(shí)時(shí)分析遠(yuǎn)程會(huì)話
通過修改java start命令的VM參數(shù),您可以獲取任何Java應(yīng)用程序以偵聽來自JProfiler GUI的連接。概要分析的應(yīng)用程序不僅可以在本地計(jì)算機(jī)上運(yùn)行,而且JProfiler可以通過網(wǎng)絡(luò)連接到概要分析的應(yīng)用程序。此外,JProfiler 為所有流行的應(yīng)用程序服務(wù)器提供了 許多集成向?qū)В蓭椭O(shè)置應(yīng)用程序以進(jìn)行性能分析。
離線分析和觸發(fā)器
您不必將JProfiler GUI連接到已分析的應(yīng)用程序即可對(duì)其進(jìn)行概要分析:通過 脫機(jī)概要分析, 您可以使用JProfiler強(qiáng)大的觸發(fā)系統(tǒng)或JProfiler API來控制概要分析代理并將快照保存到磁盤。以后,您可以在JProfiler GUI中打開這些快照,也可以使用命令行導(dǎo)出工具或export ant任務(wù)以編程方式導(dǎo)出概要分析視圖。
查看HPROF快照
可以打開使用JVM工具(如jconsole或jmap)拍攝的或由-XX:+ HeapDumpOnOutOfMemoryError JVM參數(shù)觸發(fā)的HPROF快照。
創(chuàng)建自定義探針
提供自定義探針向?qū)В鼓梢灾苯釉贘Profiler GUI中自定義探針。然后將探針部署到已配置的應(yīng)用程序,在更改或添加自定義探針時(shí)可不必重新啟動(dòng)已配置的應(yīng)用程序。
支持平臺(tái)
JProfiler在以下平臺(tái)上支持分析:
JProfiler supports the following modes of operation:
 |
Live profiling of a local session
Once you define how your application is started, JProfiler can profile it and you immediately see live data from the profiled JVM. To eliminate the need for session configuration, you can use one of the many IDE plugins to profile the application from within your favorite IDE. |
 |
Live profiling of a remote session
By modifying the VM parameters of the java start command you can get any Java application to listen for a connection from the JProfiler GUI. The profiled application can not only run on your local computer, JProfiler can attach to a profiled application over the network. In addition, JProfiler provides numerous integration wizards for all popular application servers that help you in setting up your application for profiling. |
 |
Offline profiling
You do not have to connect with the JProfiler GUI to the profiled application in order to profile it: With offline profiling you can use JProfiler's powerful trigger system or the JProfiler API to control the profiling agent and save snapshots to disk. At a later time you can open these snapshots in the JProfiler GUI or programmatically export profiling views with the command line export tool or the export ant task. |
 |
Snapshot comparisons
In JProfiler, you can save a snapshot of all current profiling data to disk. JProfiler offers a rich comparison facility to see what has changed between two or more snapshots. Alternatively you can create comparison reports programmatically with the command line comparison tool or the comparison ant task. |
 |
Viewing an HPROF snapshot
JProfiler can open HPROF snapshots that have been taken with JVM tools such as jconsole or jmap or that have been triggerd by the -XX:+HeapDumpOnOutOfMemoryError JVM parameter. |
The following list gives a high level overview of the profiling views in JProfiler:
Memory profiling
JProfiler's memory view section offers dynamically updated views on memory usage and views that show information about allocations spots. All views have several aggregation levels and can show live and garbage collected objects.
 |
All objects
Shows classes or packages of all objects on the heap with instance counts and size information. You can mark current values and show differences. |
 |
Recorded objects
Shows classes or packages of all recorded objects. You can mark current values and show differences. |
 |
Allocation call tree
Shows a call tree or methods, classes, packages or Java EE components with annotated allocations of selected classes. |
 |
Allocation hot spots
Shows a list of methods, classes, packages or Java EE components that allocate selected classes. You can mark current values and show differences. The tree of backtraces can be shown for each hot spot. |
 |
Class tracker
Shows a timeline with a graph of instance counts for selected classes. |
|
Heap walker
In JProfiler's heap walker you can take a snapshot of the heap and drill down to objects of interest by performing selection steps. The heap walker has five views:
 |
Classes
Shows all classes and their instances. |
 |
Allocations
Shows allocation tree and allocation hot spots for recorded objects. |
 |
Biggest objects
Shows the objects that block the largest parts of the heap from being garbage collected. The dominator tree can be expanded in place to show these retained objects. |
 |
References
Shows a graph of references for individual objects and offers a "show path to garbage collector root" functionality. Also offers cumulated views for incoming and outgoing references. |
 |
Data
Shows instance and class data for individual objects. |
 |
Time
Shows a time-resolved histogram of recorded objects. |
|
CPU profiling
JProfiler offers various ways to record the call tree to optimize for performance or detail. The thread or thread group as well as the thread status can be chosen for all views. All views can be aggregated on a method, class, package or Java EE component level. The CPU view section contains:
 |
Call tree
Shows a cumulated top-down tree of all recorded call sequences in the JVM. JDBC, JMS and JNDI service calls are annotated into the call tree. The call tree can be split for different request URL to a servlet or JSP. You can mark methods for "exceptional method run recording" and see the slowest invocations separatly. |
 |
Hot spots
Shows the list of the most time consuming methods. The tree of backtraces can be shown for each hot spot. Hotspots can be calculated for method calls, JDBC, JMS and JNDI service calls, as well as for URL invocations. |
 |
Call graph
Shows a graph of call sequences starting from selected methods, classes, packages or Java EE components. |
 |
Method statistics
Shows statistical information about the distribution of call times for all methods together with a call time distribution graph, that can be used to spot outliers. |
 |
Call tracer
Shows recorded chronological traces for method calls grouped by thread, package and class. |
|
Thread profiling
For thread profiling, JProfiler offers the following views:
 |
Thread history
Shows a timeline with thread activity and thread status. |
 |
Thread monitor
Shows a list of all live threads with their current activity. |
 |
Thread dumps
You can take multiple threads dumps and analyze them in the thread dumps view. |
|
Monitor profiling
For monitor profiling, JProfiler offers the following views:
 |
Current locking graph
Shows a graph of all waiting and blocking situations in the JVM. |
 |
Current monitors
Shows the currently used monitors and their associated threads. |
 |
Locking history graph
Shows the history of recorded waiting and blocking situations as graphs. |
 |
Monitor history
Shows the history of recorded waiting and blocking events. |
 |
Monitor usage statistics
Shows statistics for monitors grouped by monitors, threads and classes of monitors. |
|
VM telemetry
To observe the internal state of your JVM, JProfiler offers various telemetry views:
 |
Heap
Shows a timeline with a graph of the used heap and the heap size. |
 |
Recorded objects
Shows a timeline with a graph of live objects and arrays that have been recorded. |
 |
Recorded throughput
Shows a timeline with a graph of the rates of object creation and garbage collection for recorded objects. |
 |
GC activity
Shows a timeline with a graph of garbage collector activity. |
 |
Classes
Shows a timeline with a graph of loaded classes. |
 |
Threads
Shows a timeline with a graph of active threads. |
 |
CPU load
Shows a timeline with a graph of the CPU load generated by the profiled application. |
|