Apache Camelなどの多くのアプリケーションサーバーやフレームワークは、設定やmonitor目的で多数のMBeanを公開するためにJMXを使用します。JVM自体も、JVM内の低レベルな操作に関する興味深い情報を提供する多数のプラットフォームMXBeanを公開しています。
JProfilerには、プロファイルされたVM内の登録済みMBeanをすべて表示するMBeanブラウザーが含まれています。JProfilerエージェントはすでにプロセス内で実行されており、すべての登録済みMBeanサーバーにアクセスできるため、MBeanサーバーにアクセスするためのJMXのリモート管理レベルは不要です。
JProfilerはOpen MBeanの型システムをサポートしています。Open MBeanは多数の単純型を定義できるだけでなく、カスタムクラスを伴わない複雑なデータ型も定義できます。また、データ構造として配列やテーブルも利用可能です。MXBeanを使用すると、JMXによってJavaクラスからOpen MBeanを自動的に簡単に作成できます。たとえば、JVMによって提供されるMBeanはMXBeanです。
MBean自体には階層構造はありませんが、JProfilerは最初のコロンまでのオブジェクトドメイン名をツリーの第1レベルとし、すべてのプロパティを再帰的にネストされたレベルとして使用することで、MBeanをツリー形式に編成します。プロパティ値が最初に表示され、末尾の角括弧内にプロパティキーが表示されます。typeプロパティは優先され、トップレベルノードの直下に表示されます。
属性
MBeanのコンテンツを表示するツリーテーブルの最上位レベルには、MBean属性が表示されます。
以下のデータ構造はネストされた行として表示されます。
-
配列
プリミティブ配列およびオブジェクト配列の要素は、インデックスをキー名としてネストされた行に表示されます。 -
コンポジットデータ
コンポジットデータ型のすべてのアイテムは、ネストされた行として表示されます。各アイテムは任意の型を取ることができるため、任意の深さまでネストを続けることができます。 -
表形式データ
MXBeanでは、java.util.Mapのインスタンスが1つのキー列と1つの値列を持つ表形式データ型にマッピングされている表形式データに遭遇することが最も多くなります。キーの型が単純型の場合、Mapは「インライン」で表示され、各キーと値のペアがネストされた行として表示されます。キーが複雑な型を持つ場合は、ネストされたキーと値のエントリを持つ「map entry」要素のレベルが挿入されます。これは、コンポジットキーと複数の値を持つ一般的な表形式タイプの場合も同様です。
任意でMBean属性を編集可能にすることができ、その場合は値の横に 編集アイコンが表示され、Edit Attribute Valueアクションがアクティブになります。コンポジット型および表形式型はMBeanブラウザーでは編集できませんが、配列や単純型は編集可能です。
配列など、値がnull許容の場合、エディターにはnull状態を選択するためのチェックボックスがあります。
配列要素はセミコロンで区切られます。末尾のセミコロン1つは無視できるため、1と1;は同等です。セミコロンの前の値が省略されている場合、オブジェクト配列ではnull値として扱われます。文字列配列の場合、二重引用符("")で空の要素を作成でき、要素全体を引用符で囲むことでセミコロンを含む要素を作成できます。文字列要素内の二重引用符は2重にする必要があります。たとえば、文字列配列値として次のように入力すると、
"Test";"";;"embedded "" quote";"A;B";;
次のような文字列配列が作成されます。
new String[] {"Test", "", null, "embedded \" quote", "A;B", null}
JProfilerは、数値のMBean属性値からカスタムテレメトリーを作成できます。カスタムテレメトリー用にMBeanテレメトリーラインを定義すると、テレメトリーデータを提供する属性を選択できるMBean属性ブラウザーが表示されます。すでにMBeanブラウザーで作業している場合は、コンテキストメニューのAdd Telemetry For Valueアクションを使用すると、新しいカスタムテレメトリーを簡単に作成できます。
テレメトリーは、コンポジットデータや、単純なキーと単一の値を持つ表形式データ内のネストされた値を追跡することもできます。ネストされた行を選択すると、パスコンポーネントがスラッシュで区切られた値のパスが構築されます。
オペレーション
MBean属性のインスペクトや変更に加えて、MBeanオペレーションを呼び出してその戻り値を確認することができます。MBeanオペレーションとは、セッターまたはゲッターではないMBeanインターフェース上のメソッドのことです。
オペレーションの戻り値はコンポジット型、表形式型、または配列型を持つ場合があるため、MBean属性ツリーテーブルと同様のコンテンツを含む新しいウィンドウが表示されます。単純な戻り値型の場合、「Return value」という名前の行が1行だけ表示されます。その他の型の場合、「Return value」は結果が追加されるルート要素となります。
MBeanオペレーションには1つ以上の引数を指定できます。これらを入力する際は、MBean属性を編集する場合と同じルールと制限が適用されます。
MBeanスナップショット
MBeanのライブ値を表示するだけでなく、現在の状態のスナップショットを取得することもできます。新しいスナップショットはそれぞれMBeanビューセクションに個別のビューとして追加され、カスタムラベルを割り当てることができます。スナップショットを取得する際、現在のフィルターに従って表示されているMBeanのみが含まれます。これにより、特定のMBeanに焦点を絞り、目的に関係のないMBeanへのクエリによるオーバーヘッドを削減できます。
JProfiler UIでスナップショットを保存すると、すべてのMBeanスナップショットも同様に保存されますが、ライブMBeanビューは保存されません。オフラインプロファイリングの場合、Controller APIまたは「Trigger MBean snapshot」トリガーアクションを使用して、プログラムからMBeanスナップショットを取得できます。
Controller APIとトリガーアクションは両方とも、ビューセレクターに表示されるオプションのラベルと、含まれるMBeanをフィルタリングするためのオプションの正規表現をサポートしています。















