From ej-technologies GmbH
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 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
# 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
* New profiling mode: Attach JProfiler GUI to running JVMs, also from IDE integrations
* Enable remote profiling for running JVMs with the new jpenable command line utility
* A command line controller for profiled JVMs is provided with the new jpcontroller command line utility
* Improved filter selection in the session settings dialog
* Heap walker: The application hot spots view now shows back traces
* Improved behavior and progress feedback when connecting to a server that was integrated with the "startup immediately" mode
* Display calendar time in bookmarks dialog and in the status bar for views with a time axis
* Display calendar time in status bar for snapshots (only for snapshots saved with 6.2 and higher)
* Profiling OSGI applications is now possible without having to modify OSGI properties for boot delegation
* Integration wizard for Tomcat 7.x
* Integration wizard for JBoss 7.x
* Ignored methods in the filter settings did not work with unfiltered methods
* When changing profiling settings with different filters, a lot less classes are newly instrumented now
* Fixed problems when changing profiling settings from instrumentation to sampling
* Not all park methods in LockSupport were attributed to the wait state
* Deleting elements with the keyboard in the call tracer always deleted two rows
* Fixed NPE in the heap walker
* Canceling operation in the heap walker did not work correctly