ヒストグラム・ビューは、各クラスのインスタンス数と、それらのインスタンスのシャロー・サイズと保持サイズがリストされている表です。
ヒストグラム・ビューは、さらに詳細な分析を行うための手掛かりとして使用できます。
始める前に
ツールバーの「
ヒストグラム」アイコンをクリックするか、「概説」タブの「
ヒストグラム」リンクをクリックして、ヒストグラム・ビューを開きます。
このタスクについて
ヒストグラム・ビューを使用して、オブジェクトをグループ化し、それらのオブジェクトのサイズを調べるか、それらのオブジェクトに対して照会を実行します。
手順
- 列ヘッダーをクリックして、リストのソート順を変更します。
- ツールバーの「結果のグループ化...」アイコンをクリックして、クラス、スーパークラス、クラス・ローダー、またはパッケージごとにオブジェクトをグループ化します。
各スーパークラスのすべてのサブクラスを確認するには、スーパークラスによってオブジェクトをグループ化します。例えば、java.util.AbstractMap スーパークラスには、java.util.HashMap, および java.util.TreeMap, などのサブクラスが含まれています。
各クラス・ローダーによってどのクラスがロードされたかを確認するには、クラス・ローダーによってオブジェクトをグループ化します。Memory Analyzer は分かりやすいラベルをクラス・ローダーに付け、分析用にヒープ・ダンプをより小さいパーツに簡単に分割できるようにします。
例えば、OSGi バンドルのラベルをバンドル ID にします。クラス・ローダーの分析について詳しくは、Java の基礎: 「クラス・ローダー・エクスプローラー」照会を参照してください。
Java™ パッケージの階層を調べるには、パッケージによってオブジェクトをグループ化します。
- 列の上部にあるテキスト・フィールドを使用して、結果をフィルターに掛けます。
正規表現を使用して、テキスト列をフィルターに掛けます。正規表現の作成には、オートコンプリートが役立ちます。例えば、「クラス名」列の上部にあるフィールドに「String」と入力し、Enter (キー) を押します。
フィルター・フィールドが正規表現 .*String.* に変わり、結果がフィルターに掛けられて、名前に String を含むクラスのみが表示されます。
数値列の場合は、次のいずれかのフォーマット (ここで、
n は数値) を使用して、フィルター・ストリングを入力します。パーセント列には、パーセント記号 (%) を指定します。
表 1. 数値フィルターのフォーマット| フォーマット・タイプ |
フォーマット |
例 |
| 範囲 |
n[%]..n[%]
|
1000..10000
1.5%..5%
|
| 上方境界 |
<=n[%]
<n[%]
|
<=10000
<5%
|
| 下方境界 |
>=n[%]
>n[%]
|
>=1000
>1.5%
|
表の終わりの「合計」行は、フィルターによって除外された項目数を示しています。例えば、合計: 14 項目 (2,022 個フィルター済み) は、2,022 個の項目が除外されたことを示しています。
- オブジェクト・セットの保持サイズを算出します。 デフォルトで、Memory Analyzer は個々のオブジェクトの保持サイズを表示します。
オブジェクト・セットの保存サイズを知りたい場合は、この値を算出する必要があります。
- すべての行の保持サイズを概算するには、ツールバーの「保存サイズの計算」アイコンをクリックし、「最小保存サイズの計算 (概算値)」を選択します。
- 行のサブセットの保存サイズを概算するには、行を選択して右クリックし、「最小保存サイズの計算 (概算値)」を選択します。
- 行、または行のサブセットを分析します。
- 分析する行を 1 行または複数行選択します。
- 右クリックして、メニュー・リストを表示します。
- 実行する分析のタイプを選択します。 以下のような多数のオプションの中から選択することができます。
- 出力参照または入力参照を持つオブジェクトをリストする。
- 属性の値ごとにオブジェクトをグループ化する。
- サイズごとにコレクションをグループ化する。
注: 「合計」行は、ビューに表示されていないすべての項目を表します。この行を選択すると、これらの非表示項目に対する分析が実行されます。すべての項目に対して分析を実行するには、表示されているすべての項目と「合計」行を選択します。フィルター処理は通常どおり実行されます。フィルターによって除外されている項目は、分析からも除外されます。