ブログ

ej-technologies の製品ニュース、アップデート、および技術に関する知見。

RSS で読む。 メール で購読。 でフォロー。

LLMのブラックボックスを解き明かす:JProfilerのカスタム分類

2026-03-06
投稿者: Ingo Kegel

モダンなエージェント型アプリケーションでは、単一のインターフェースを通じて幅広い論理タスクを実行することが少なくありません。これらの操作はパフォーマンスとコストの特性が大きく異なるにもかかわらず、従来のプロファイラでは区別のないコールツリーとして表示されます。

デフォルトでは、JProfilerはこれらのリクエストをモデル名ごとにグループ化します。これにより大まかな概要は把握できますが、機能の異なるワークロードを区別するために必要な粒度は得られません。

このスクリーンキャストでは、内部メタデータ、指示の構造、アプリケーションの状態に基づいて独自の分類ルールを定義するスクリプトにより、この事前定義された視点を超える方法を紹介します。

AIのプロファイリング:LangChain4jとSpring AI

エージェント型アプリケーションには、プロファイリングならではの課題があります。標準的なCPU使用率にとどまらず、パフォーマンスとコストは、フレームワークの抽象化の背後に隠れたプロンプト、RAGリトリーバー、ツール呼び出しの複雑な構造によって決まります。

ベンダーロックインを避けるため、ほとんどの開発者はLangChain4jやSpring AIのようなフレームワークを利用しています。JProfilerのAIプローブは、こうしたフレームワークの内部を深く可視化します。

このスクリーンキャストでは、LangChain4jのカスタマーサポートエージェントをプロファイリングする手順を辿りながら、AIプローブがプロンプトの構成を可視化し、トークン消費の多い外れ値を切り分け、リソースコストを記録されたコールツリーに直接投影する様子を紹介します。

Heap Walker scripting for snapshot analysis

2025-05-02
投稿者: Ingo Kegel

Previously, JProfiler's heap walker only offered advanced filtering and grouping features in live sessions. With JProfiler 15, the heap walker introduces full support for filtering and grouping in snapshots. A new API lets you write scripts to filter objects or define custom grouping logic based on dumped object data.

This screencast demonstrates the new functionality with a small Hibernate-based demo that creates different types of query cache entries. Hibernate’s second-level cache can quickly fill up with unexpected entries, and identifying what’s taking up space is key to resolving memory issues. JProfiler now makes it possible to answer such questions with snapshots.

The screencast shows how you can:

  • Group cache keys by query structure to compare memory impact
  • Use object set filter scripts to isolate problematic cache entries
  • Use merged dominating references to understand why objects are retained

Capturing and comparing MBean states with JProfiler

2025-04-30
投稿者: Ingo Kegel

MBeans expose a wide range of runtime metrics and management operations that are essential for understanding the internal state of Java applications. Traditionally, JProfiler has supported live inspection of MBeans during a profiling session.

With the new MBean snapshot feature in JProfiler 15, it is now possible to capture the complete MBean state, compare snapshots, and analyze metrics offline, even after the application has shut down.

This screencast demonstrates the new functionality with a small Hazelcast application that performs random map operations and registers a custom MBean for triggering cleanup operations.

Along the way, you will see how to:

  • Capture and compare MBean snapshots manually
  • Trigger MBean snapshots programmatically with method triggers
  • Restrict the snapshot scope to specific MBeans

Advanced SSH remote profiling with JProfiler

2025-04-28
投稿者: Ingo Kegel

Remote profiling can be challenging when SSH access involves custom setups, proxies, or cloud authentication plugins. JProfiler 15 introduces advanced SSH connection features that remove these obstacles, enabling profiling in complex environments without manual setup.

This screen cast shows how to profile remote JVMs even in situations where the built-in SSH client is insufficient, using AWS Session Manager as an example.

Along the way, you will see how to:

  • Use OpenSSH mode for remote profiling
  • Connect with ProxyCommand and the AWS CLI
  • Handle SSH port forwarding restrictions with netcat mode

Profiling Java applications in VS Code with JProfiler

2025-04-25
投稿者: Ingo Kegel

JProfiler now integrates directly into VS Code, bringing the powerful profiling tool into your everyday development workflow.

In this screencast, we profile the Spring Pet Clinic demo and walk through the features of the JProfiler extension for VS Code, including:

  • Toggling profiling mode
  • Automatic setup of profiled packages
  • Source code navigation from profiling views
  • Attach mode for unsupported launch methods (like Maven)
  • Built-in Gradle integration

If you're using a launch method in VS Code that isn't currently supported, let us know, we’re always looking to expand support.

Advanced Kafka probe configuration in JProfiler

2025-04-23
投稿者: Ingo Kegel

In our first Kafka screencast, we looked at how JProfiler correlates message flow and CPU usage through producers, consumers, and topic-level call trees.

In this follow-up, we go deeper, showing how to configure custom naming for Kafka messages based on their content.

This enables you to:

  • split call trees by semantic message types
  • track specific event types in probe views
  • add value-level details to single event descriptions
  • visualize outliers in event duration histograms

We also trigger a Kafka message spike via an API call and analyze its impact, all without changing the application code.

Profiling Kafka #1 – Message Flow & Hot Spots

2025-04-22
投稿者: Ingo Kegel

Kafka-based applications are notoriously hard to profile. Message flow happens in background threads, stack traces don’t reveal the full picture, and it’s hard to know which topic contributes to which hot spot.

JProfiler’s Kafka probes give you deep insight: producers, consumers, and message-level details are all captured and correlated with performance data.

This screencast walks through profiling a Spring Kafka application, showing how:

  • consumer call trees are split by topic
  • producers link directly into probe views
  • you can correlate CPU hot spots with Kafka topics
  • Kafka events are filterable, inspectable, and aggregatable

Garbage collector analysis in JProfiler

2023-09-22
投稿者: Ingo Kegel

This screencast shows how to use the garbage collector probe in JProfiler. Having access to detailed information about the overall activity of the GC, as well as the single garbage collections, is crucial for tuning the garbage collector and achieving an optimal performance for your application.

Recording JFR snapshots with JProfiler

2023-09-20
投稿者: Ingo Kegel

Recording JFR snapshots with JProfiler

This screencast shows JProfiler's versatile functionality as a JFR recording controller. As an example, a JFR recording on a Kubernetes cluster is recorded and the resulting snapshot is shown in JProfiler. In this context, you can see the wizard for configuring JFR recording settings. In addition, JFR recordings of terminated JVMs and the handling of externally started JFR recordings are demonstrated.

アーカイブ