For humansFor AI agents

JProfiler, the #1 Java profiler
for your AI agentfor Claude Codefor Codexfor Cursorfor OpenCodefor your AI agent

Your AI agent can read your code. With JProfiler, it can see it run.

Run this command in PowerShell:

irm https://www.ej-technologies.com/jprofiler/mcp/install.ps1 | iex

Run this command in your terminal:

curl -fsSL https://www.ej-technologies.com/jprofiler/mcp/install.sh | sh

Requires Node.js to be installed. Select your agent and follow the instructions below.

Run this command in Claude Code:

claude mcp add jprofiler -- npx -y @ej-technologies/jprofiler-mcp@latest

If you already have JProfiler installed, you can configure the integration directly from the UI.

Open JProfiler, go to Session → AI Agent Integrations, select your agent, and JProfiler will configure it automatically.

Background artwork
Background artwork
Background artwork
Background artwork

What your agent can do with JProfiler

Without runtime data, an agent can only guess at performance problems from the source code. With JProfiler, it measures where time and memory are actually spent and verifies that a fix worked.

Find the real hotspot

Source code review often points to the wrong method. Sampling CPU data, call trees and back traces show your agent where time is actually spent.

Analyze heap dumps without a GUI

Agents cannot open Eclipse MAT or a profiler UI. JProfiler's heap analysis offers queryable views over HPROF dumps: biggest objects, retained sizes, paths to GC roots and instance counts.

Find JDBC and JPA patterns that source review misses

A query that looks harmless in the code can be a problem when it is executed 580 times per refresh cycle. Call counts and aggregated executions from the database probes make per-entry queries, N+1 patterns and redundant checks visible.

Catch the occasionally slow call

Some calls are fast on average, but slow once in a hundred runs. Outlier detection finds methods whose maximum deviates strongly from their average, and exceptional-run recording keeps the slowest invocations individually expandable, so your agent can analyze a single slow execution instead of a merged average.

Prove algorithmic complexity with curve fits

Is this method O(n²) in the payload size? Your agent gets measured (input size, time) points with a curve fit, instead of arguing about Big-O from the source code.

Let the agent write its own probes

When the built-in probes do not cover the problem, the agent defines script probes: lightweight instrumentation that is computed per method invocation and pushed to the running JVM, without changing code, builds or deployments of your application.

... and much more

Measure LLM and AI call costs

Context-aware metrics for agentic applications: LLM call latencies, token usage and AI probe events help your agent minimize costs and optimize model performance.

Prove that a fix worked

With before-and-after profiling runs and snapshot comparisons, the agent measures, applies a fix and verifies the result.

Diagnose deadlocks and lock contention

Monitor statistics, contention timelines and locking history with stack traces, lock-order inversion graphs, and monitor dumps from live JVMs for deadlock analysis.

Profile JVMs in Docker and Kubernetes

Containerized JVMs are selected directly, without manual agent setup. Heap dumps and CPU data from inside containers work out of the box.

Analyze JFR recordings from production

Low-overhead JFR snapshots from live systems are analyzed with the full power of JProfiler, ideal for post-mortem investigations.

Take heap, thread and monitor dumps on demand

Point-in-time actions on live JVMs, including virtual thread hierarchies. MBean snapshots and recording control are available as live actions too.

Find allocation hot spots

Allocation recordings with stack traces show where memory pressure comes from, and heap dumps carry per-object allocation sites.

Analyze GC pauses

Individual garbage collections with causes, pause times, phases and heap usage before and after each collection, plus the full GC configuration.

Capture transient states with triggers

Heap spikes and other transient states are recorded automatically: triggers take thread dumps, heap dumps and MBean snapshots when a condition fires.