The #1 Java Profiler

See exactly where your JVM spends its time.

JProfiler combines high-level analytics with low-level JVM data to pinpoint performance bottlenecks, memory leaks, slow database queries, and costly HTTP calls — all in one intuitive interface.

30k+
customers worldwide
75%
of the Fortune 500
1-click
IDE integration

Trusted by developers at 30,000+ companies · 75%+ of all Fortune 500 firms profile with JProfiler

A closer look

Explore JProfiler

Ten views into how JProfiler helps you understand and optimize your Java applications.

01

Easy Usage

Having a reliable tool to analyze your applications is crucial, but having the right tool matters even more. Instead of spending hours figuring out how a tool works, JProfiler makes it simple and intuitive from the start. Its session structure is straightforward, integrates smoothly with third-party tools, and presents analysis results in a clear, natural way. JProfiler is thoughtfully designed to help you solve problems at every level.

overview
02

Database analysis for JDBC, JPA, and NoSQL

The leading cause of performance issues in business applications is database calls. JProfiler's JDBC, JPA/Hibernate, and NoSQL probes (MongoDB, Cassandra, HBase) pinpoint access delays and inefficient calls from your code. With hotspot, timeline, connection, telemetry, and event views, JProfiler's database probes are essential for analyzing your application's database layer.

overview
03

Support for Java EE

JEE features are visible across most of JProfiler's views. For example, at the JEE Aggregation level, you can see the call tree of JEE components in your application. In addition, CPU profiling adds a higher semantic layer to low-level analysis data, surfacing calls like JDBC, JPA/Hibernate, JMS, and JNDI directly in the view. With JEE support, JProfiler bridges the gap between low-level code profiling and high-level JEE monitoring.

overview
04

High-level analysis data

JProfiler provides many probes that display higher-level data from Java EE subsystems, such as JDBC, JPA/Hibernate, JSP/Servlet, JMS, Web Services, and JNDI. It also displays high-level info for RMI calls, files, sockets, and processes. Each probe has a dedicated view for analysis, highlighting issues, and tracing events. These views are also available for custom probes, configurable on-the-fly.

overview
05

Memory Leak Analysis

Without the right tools, finding a memory leak is nearly impossible. JProfiler's Heap Walker solves even complex memory problems through an intuitive interface. Its 5 different views let you analyze a set of objects from multiple angles. Each view allows you to examine the selected objects and switch seamlessly to a different set for further analysis.

overview
06

QA functions

JProfiler isn't just a development tool, it's built for QA as well. Rich snapshot comparison features make it easy to track down problems. JProfiler also strongly supports command-line operations, letting you export and compare snapshot data directly from the command line. The bundled Ant task lets you run all these command-line operations right from your build script.

overview
07

Supports a variety of platforms (IDEs and application servers)

JProfiler provides a native agent library for a wide range of platforms (32-bit/64-bit JVM). With broad IDE integration, profiling can be seamlessly performed during application development. Its integration wizard lets you get started on almost any common application server in just a few clicks, no need to dig through documentation.

overview
08

Reduced overhead

JProfiler lets you record data only when you need it. Start your application with the JProfiler agent and attach the GUI later, as long as you're not actively recording, overhead stays minimal. This is on-demand profiling. Advanced settings let you fine-tune parameters and see exactly how each affects performance, while ready-made templates let you quickly select settings for common use cases.

overview
09

Powerful CPU Analysis Profiler

Eliminating performance bottlenecks is a classic use case for an analysis tool. However, since CPU data can be overwhelmingly detailed, the way that data is collected greatly affects usability. JProfiler addresses this with features like the call tree view filter, aggregation levels, and thread status selector, giving you critical advantages when tracking down the root cause of a problem.

overview
10

Thread Profiler Integration

Thread problems occur more often than you'd imagine, and without a thread profiler, they're extremely difficult to solve. JProfiler reveals the performance of multithreaded applications bogged down by excessive locking, helping you handle issues that other tools simply can't - including deadlocks. You can view thread profiling through multiple dedicated views, as well as integrated directly with CPU profiling.

overview
What you get

JProfiler Features

Dynamic analysis of local sessions

Once you define how your application is launched, you can profile it in JProfiler, and you can immediately see the live data of the JVM. You don't need to configure the session, and you can analyze applications from your favorite IDE through the IDE plugin.

Dynamic analysis of remote sessions

If you change the VM parameters of the java start command, you can listen for connections from the JProfiler GUI in Java applications. The profiled application can be executed on the local computer, as well as JProfiler You can also attach it to the application over the network. In addition, JProfiler provides an integration wizard for any major application servers for configuring the profiling application.

Offline Analysis and Triggers

You do not need to connect the JProfiler GUI to your application during profiling. In the offline analysis function, JProfiler's powerful trigger system or API can be used to control the profiling agent and save the snapshot to disk. Open these snapshots in the JProfiler GUI later, or command You can also export the profiling view programmatically using the Line Export Tool or Export ant task.

Comparison of snapshots

JProfiler allows you to save a snapshot of the current analysis data on disk. There is a comparison function that allows you to see changes between 2 or more snapshots. You can also create a comparison report programmatically using the command-line comparison tool or the comparison ant task.

HPROF View Snapshots

JProfiler allows you to open HPROF snapshots triggered by JVM tools such as josnole and jmap, as well as by the -XX:+ HeapDumpOnOutOfMemoryError JVM parameter.

Request Tracking

The innovative concept of request tracking makes it very easy to analyze parallel and multi-threaded programming. Request tracking uses a hyperlink in the call tree view to connect the calling site to the execution site between different threads. The following multi-threaded You can track the system.

    java.util.concurrent Package Execution Program

    AWT Event

    SWT Events

    Start of thread

In addition, if both JVMs are profiled and open in JProfiler, you can track calls across JVM boundaries. You can track the following remote calls:

    RMI Call

    Web service call

    Remote EJB call

Creating a custom probe

JProfiler provides a custom probe wizard that allows you to directly define custom probes in the JProfiler GUI. Custom probes are deployed and customized to applications where JProfiler performs analysis There is no need to restart the application when changing or adding the probe. p>

memory

Memory Profiling

The JProfiler's Memory Views section has a view that dynamically updates according to memory usage, and a view that displays information about the allocation hotspot. All views have multiple aggregation levels, live objects and garbage Displays the objects to be collected.

All objects
Displays the number and size of instances in a class or package of all objects on the heap. You can mark the current value and display the difference.
Recorded objects
View all recorded objects' classes or packages. You can mark the current value and display the difference.
Allocation call tree
Shows the allocation of the call tree, method, class, package, or JEE component of the selected class.
Allocation hot spots
Displays the allocation list of methods, classes, packages, or JEE components for the selected class. You can mark the current value and display the difference. For each hot spot, a tree of backtraces is displayed.
Class Tracker
Displays the timeline in the graph of the number of instances of the selected class.
heap

Heap Walker

JProfiler Heap Walker allows you to take a snapshot of the heap and execute the selection step to drill down on the target object. Heap Walker has 5 views:

Classes
Shows all classes and their instances.
Allocations
The associated tree and the location hotspots of the recorded objects are displayed.
Biggest Objects
Displays an object that blocks the garbage collection of the largest part of the heap. You can expand the dominator tree to display these objects.
References
Shows the individual objects and primitive data to be referenced, the referenced objects and the [Show Paths To GC Root] function. It also displays a cumulative view of the referenced and referenced objects. Objects to reference In the view, filters can be applied. There are two types of filters: filtering by primitive values and filtering by script.
Data
Displays instances and class data for individual objects.
Time
Displays the time-de-degrading histogram of the recorded object.
Inspections
In the inspection view, you can perform a variety of tests to analyze current set of objects in a variety of ways.
Graph
In a graph, you can add objects from different sets of objects, open the referenced objects, the objects to be referenced, search for paths between selected objects, and view paths to the Cabage Collector Route to explore their relationships.
cpu

CPU Profiling

JProfiler allows you to record call trees in a variety of ways to optimize performance. In all views, you can select a thread, thread group, and thread status. All views are methods, classes, packages, JEE It can be aggregated at each level of the component. The CPU profiling has the following views:

Call Tree
A cumulative top-down tree of all call sequences recorded in the JVM. The JDBC, JMS, and JNDI service calls are annotated to the call tree. The call tree is a servlet or It can be divided into different request URLs to JSP.[ You can mark the Exceptional method run recording] to display the slowest calls individually. Request Tracking allows you to connect the multithreaded application calling site to the running site.
Hot Spots
Displays a list of the most time-consuming methods. You can view the tree of the backtrace in each hot spot.
Call Graph
Displays a graph of the call sequence starting with the selected method, class, package, or JEE component.
Methodistic Statistics
Displays statistics on the distribution of call times for all methods, along with the distribution graph of the call time that can be used to find outliers.
Call Tracer
Displays a time series trace of method calls grouped by thread, package, and class.
thread

Thread Profiling

Thread profiling has the following views.

Thread History
Displays the timeline of the activity and status of the thread.
Thread Monitor
Displays a list of current activities in the live thread.
Thread Dumps
You can analyze multiple thread dumps.
monitor

Monitor Profiling

Monitor Profiling has the following views.

Current Locking Graph
Displays a graph of all pending and blocked situations in the JVM.
Current Monitors
Displays the monitor in use and its associated threads.
Locking History Graph
The history of the recorded wait and block status is displayed in graphs.
Monitor History
Recorded standby and blocks Displays the history of the event.
Monitor Usage Statistics
Displays statistics for monitors grouped by monitor, thread, and monitor class.
vm

VM Telemetry

To monitor the internal state of the JVM, the telemetry has the following views:

Heap
Displays the timeline in graphs of the amount and size of used memory.
Recorded Objects
Displays the timeline in graphs of recorded live objects and arrays.
Recorded Throughput
Displays the timeline in a graph of the ratio of object generation and garbage collection in the recorded object.
GC Activity
The time line is displayed in the graph of the garbage collector activity.
Classes
Displays the time line in the graph of the loaded class.
Threads
Displays the time line in the graph of the active thread.
CPU Load
Displays the timeline in the graph of the CPU load generated by the application to profile.
database

Databases

JProfiler supports specific probes in the following databases:

  • The JDBC
  • JPA/Hibernate
  • MongoDB
  • Cassandra
  • HBase
jee

List two title

JProfiler has the following probes:

  • The JDBC
  • JPA/Hibernate
  • JMS
  • JNDI
  • RMI
  • Web Services
  • Saablet
  • File
  • Socket
  • Process

In the probe, the following information is displayed.

Time Line
In the time line view, the probe displays the control object as a color bar along the time axis. A control object is a long-lived object associated with a single probe event. For example, in the JDBC probe, control The object is a database connection. The color of the time line bar corresponds to the state of the control object.
Control Objects
The tabular details of the control object are displayed in the tellle object view. You will see details about the plot object as well as the statistics for the recorded event, such as the total throughput of the files I/O. Filter The controls and the bottom total lines allow you to quickly aggregate a subset of control objects. For some probes, you can open a dialog that displays details in the nested table and shows more detail interesting multi-line values. For example, the command of the process Line parameters can be very long.
Hot Spots
The Hot Spot view shows the hotspots of the payload name issued by the probe event sorted at the execution time. For example, the file probe has a file name, the JDBC probe has a SQL string, and the JNDI probe has a SQL string. Each probe shows a query. You can expand each hot spot and view the back traces that belong to the hot spot.
Telemetries
The telemetry view shows the various telemetry that the probe publishes.
Events
The event view shows a single event that the probe records. The event has thread and stack trace information, which can easily jump to the associated control objects. In this case too, the filter and the total row of the selected events are obtained.
What you need

System requirements

JProfiler runs on every major desktop platform and profiles applications on an even wider range of systems and architectures.

Platforms

The JProfiler GUI front-end must have a Java 11 VM. The jpenable, jdump, and jpcontrollers of the attach command-line tools require Java 6 VMs.

JProfiler supports profiling on the following platforms:

OS Archetecture Supported JMVs
Windows 11, 10, 8, and 7
Windows Server 2022, 2019, 2016 and 2012
x64/AMD64 Hotspot 1.5 - 18
IBM/OpenJ9 1.5 - 18
macOS 10.12 - 12Intel and AppleHotspot 1.7 - 18
OpenJ9 1.8 - 18
Linuxx86
x64/AMD64
Hotspot 1.5 - 18
IBM/OpenJ9 1.5 - 18
LinuxPPC
PPC64
PPC64LE
IBM/OpenJ9 1.5 - 18
LinuxARMv7
ARMv8
Hotspot 1.6 to 18
FreeBSD 12 and 13x86
AMD64
FreeBSD 1.5 - 18
AIX 7.1 - 7.3PPC
PPC64
IBM/OpenJ9 1.5 - 18

IDEs

The integration with IntelliJ IDEA was developed exclusively for ej-technologies by the IDEA plugin specialist at Fuhrer Engineering. For EAP builds, check with the IDEA Plugin Manager for a new version of JProfiler available.

JProfiler can be integrated into the following IDEs:

IDEs Windows Linux Unix MacOS
Eclipse
IntelliJ IDEA
NetBeans IDE
Simple Usability
ide
JProfiler can be easily integrated into the above IDEs. Use the setup wizard, or
ide
In the General Settings dialog, select the IDE.

Table three title

Optional short description for the third table.

Application Server Windows Linux Unix MacOS
Adobe Coldfusion MX 8, 9, 10, and 11
Apache Geronimo 1.x, 2.x, 3.x
Apache Tomcat 5.x, 6.x, 7.x, 8.x, 9.x, 10.x
Caucho Resin 3.x, 4.x
Eclipse Virgo 2.x, 3.x
Glassfish V1, V2, V3, 4.x, 5.x
IBM Websphere 6.x, 7.x, 8.x, 9.x
JBoss 4.x, 5.x, 6.x, 7.x
Wildfly
Jetty 5.x, 6.x, 7.x, 8.x, 9.x, 10.x
ObjectWeb Jonas 5.x
Oracle WebLogic Server 9.x, 10.x, 11g, 12c, 14c
Simple Usability
integration
JProfiler can be easily integrated with the above Java EE application servers. Start the integration wizard from the Start Center and follow the instructions.
integration
The integration is now complete.

Get Started Today!

Explore our shop, and if you have any questions feel free to contact us!

Price

Support