Works with Claude Code, Cursor, Codex, and any MCP-compatible tool.
Full story: www.ej-technologies.com/blog/2026/0...
Posts by Ingo Kegel
I asked the agent afterward what it would have tried without the profiling data. Its answer: enabling Hibernate batch inserts. This would have had zero effect on this problem.
That is the gap the JProfiler MCP server closes.
AI coding agents are confident. On performance problems, they are often confidently wrong.
I pointed Claude Code at CommaFeed. Connected to the JProfiler MCP server, the agent found a database hotspot, proposed a fix, handled the review, and got the PR merged.
Agents can close the loop. In the screenshot below, an agent found redundant JDBC queries, fixed the code, re-profiled, and presented a before/after comparison.
Works with Claude Code, Cursor, Codex, and any MCP-compatible tool.
Try it out: www.ej-technologies.com/jprofiler/mcp
With JProfiler 16.1, your AI coding agent can now profile directly. Set up the MCP server with a single command, and the agent handles the rest: it records profiling data, analyzes CPU hotspots, JDBC queries, HTTP calls, and heap usage, then drills into the call chain to find the root cause.
Most performance bugs in Java applications never get profiled.
The friction is too high. Switching tools, setting up sessions, interpreting results. Profiling only happens when something is already broken in production.
3/ Evaluate JProfiler 16 for free at ej-technologies.com/jprofiler/d...
We're here for you if you have any questions while trying it out! π
2/ New sorting options have been added, including ascending and descending directions. A new default sort mode prioritizes active, long-lived rows at the top, followed by recently closed rows.
1/ In JProfiler 16, timeline views, including thread history and probe timelines, support row pinning. Selected rows can be pinned to a dedicated area at the top of the view via the context menu. The order of pinned rows can be customized using drag-and-drop.
3/ Evaluate JProfiler 16 for free at ej-technologies.com/jprofiler/d...
We're here for you if you have any questions while trying it out! π
2/ You can specify obfuscator types and mapping file paths for each snapshot individually. Once applied, all comparison views, including hot spots and call trees, resolve to original class and method names.
1/ JProfiler 16 introduces deobfuscation support for snapshot comparisons. Previously, comparing snapshots from obfuscated applications required manual mapping. The comparison window now includes a "Deobfuscate" option during file selection.
4/ Evaluate JProfiler 16 for free at ej-technologies.com/jprofiler/d...
We're here for you if you have any questions while trying it out! π
3/ Additionally, the Heap Walkerβs reference views now display full string values in the dialog, removing previous character limits on previews.
2/ UI accessibility is improved with a new hover button for tables containing truncated text, directly opening the relevant tab in the detail dialog.
1/ In JProfiler 16, the node detail dialog has been updated to provide cumulative statistics when multiple nodes are selected in hot spot views. This allows for immediate aggregation of performance data across disparate nodes without manual calculation.
3/ Evaluate JProfiler 16 for free at ej-technologies.com/jprofiler/d...
We're here for you if you have any questions while trying it out! π
2/ This breakdown enables the isolation of thread-specific performance issues, such as identifying a single misbehaving thread within a larger pool. You can select a specific thread from the analysis dialog to jump directly to its call tree.
1/ A new analysis feature in JProfiler 16 allows for calculating the contribution of individual threads within a cumulative call tree. By selecting "Show Threads" on any node, users can access a percentage breakdown of all threads contributing to that specific execution path.
5/ Evaluate JProfiler 16 for free at ej-technologies.com/jprofiler/d...
We're here for you if you have any questions while trying it out! π
4/ Comparison and export features allow users to diff two individual virtual threads or entire thread dumps in a dedicated viewer. Specific threads, selections, or full dumps can also be copied to the clipboard via the context menu for external analysis.
3/ JProfiler now groups threads with identical stack traces at the same hierarchical position into a single node. You can inspect individual thread names within these groups. This grouping is also available for platform thread dumps.
2/ Virtual threads are organized hierarchically within their thread containers. This structure is particularly relevant for structured concurrency, where each scope creates a corresponding container.
1/ JProfiler 16 adds dedicated support for virtual thread dumps. The thread dumps view now provides distinct actions for synchronous platform thread dumps and asynchronous virtual thread dumps,
4/ Evaluate JProfiler 16 for free at ej-technologies.com/jprofiler/d...
We're here for you if you have any questions while trying it out! π
3/ On Linux with Java 25+, JProfiler now utilizes the jdk.CPUTimeSample event for data in the CPU section. This event measures Linux kernel CPU time, providing more accurate metrics than the old jdk.ExecutionSample event for production systems where JVMTI agents are restricted.
2/ The JFR recording wizard now supports throttle settings, including periods and emission rates. This is essential for the new jdk.CPUTimeSample event in Java 25. These throttle settings are also displayed in the CPU views for context.
1/ JProfiler 16 introduces significant optimizations for the JFR event browser. Data in the lower views is now pre-calculated, and the event table supports incremental loading. Sorting and total calculations now consider the entire filtered dataset, not just the visible subset.
While JProfiler defaults to grouping by model name, this screencast shows how to move beyond that predefined perspective.
youtu.be/cK0fYXiF1Po
If you like what you see, feel free to try it out yourself at
www.ej-technologies.com/jprofiler/d...
I'm continuing to record screencasts for new features in JProfiler!
The new AI probe deserves another screencast: Modern agentic applications perform diverse logical tasks through a single interface, yet they often appear as an undifferentiated stream in profilers.