// 
//     Licensed to the Apache Software Foundation (ASF) under one
//     or more contributor license agreements.  See the NOTICE file
//     distributed with this work for additional information
//     regarding copyright ownership.  The ASF licenses this file
//     to you under the Apache License, Version 2.0 (the
//     "License"); you may not use this file except in compliance
//     with the License.  You may obtain a copy of the License at
// 
//       http://www.apache.org/licenses/LICENSE-2.0
// 
//     Unless required by applicable law or agreed to in writing,
//     software distributed under the License is distributed on an
//     "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
//     KIND, either express or implied.  See the License for the
//     specific language governing permissions and limitations
//     under the License.
//

= NetBeans IDEでのプロファイリング・ポイントの使用
:jbake-type: tutorial
:jbake-tags: tutorials 
:jbake-status: published
:icons: font
:syntax: true
:source-highlighter: pygments
:toc: left
:toc-title:
:description: NetBeans IDEでのプロファイリング・ポイントの使用 - Apache NetBeans
:keywords: Apache NetBeans, Tutorials, NetBeans IDEでのプロファイリング・ポイントの使用

NetBeans IDEには、アプリケーションの実行時動作に関する重要な情報を提供できる強力なプロファイリング・ツールが含まれています。NetBeansプロファイリング・ツールを使用すると、IDE内からスレッドの状態、CPUパフォーマンス、およびアプリケーションのメモリー使用状況を容易にモニターすることができ、しかも比較的低いオーバーヘッドしかかかりません。

このドキュメントでは、プロファイリング・セッションを設定および制御するための代替手段としてプロファイリング・ポイントを使用する方法について説明します。プロファイリング・ポイントは、直接ソース・コード内に配置されて、ヒットされると動作をトリガーできるという点で、デバッガのブレークポイントに似ています。プロファイリング・ポイントは、一度設定されると、削除されるまでプロジェクトに含まれます。「プロファイリング・ポイント」ウィンドウを開いて、プロジェクト内のプロファイリング・ポイントを表示、変更、および削除できます。

プロファイリング・ポイントを使用して、次のタスクを実行できます。

* プロファイリング結果のリセット
* スナップショットまたはヒープ・ダンプの作成
* コード・フラグメントのタイムスタンプまたは実行時間の記録
* 負荷ジェネレータのスクリプトの停止と開始(負荷ジェネレータ・プラグインが必要)

このドキュメントでは、プロファイリング・ポイントを使用して、IDEに含まれている単純なJavaアプリケーションであるAnagram Gameサンプル・アプリケーションに関するプロファイリング・データを取得する方法を示します。Anagram Gameは非常に単純なJavaアプリケーション・プロジェクトですが、より大規模で複雑なJavaアプリケーションや、Webおよびエンタープライズ・アプリケーション・プロジェクトをプロファイルする場合も同じ手順に従います。

このチュートリアルを開始する前に、必要に応じて次のドキュメントを参照して、プロファイリング・ツールの使用に慣れておいてください。

* link:profiler-intro.html[+NetBeans IDEでのJavaアプリケーションのプロファイリングの概要+]

image::images/netbeans-stamp-80-74-73.png[title="このページの内容は、NetBeans IDE 7.2、7.3、7.4および8.0に適用されます"]




== 開始


=== 前提条件

このドキュメントは、次のテクノロジについて基本的な知識またはプログラミング経験を持つ読者を想定して書かれています。

* Javaプログラミング
* NetBeans IDE


=== チュートリアルに必要なソフトウェア

このチュートリアルでは、コンピュータに次のソフトウェアをインストールしておく必要があります。

|===
|ソフトウェアまたはリソース |必須バージョン 

|link:https://netbeans.org/downloads/index.html[+NetBeans IDE+] |7.2, 7.3, 7.4, 8.0 

|link:http://www.oracle.com/technetwork/java/javase/downloads/index.html[+Java Development Kit (JDK)+] |バージョン7または8 
|===

*注意:*

* プロファイリング・ツールはNetBeans IDEにバンドルされているため、アプリケーションのプロファイリングを開始するための特殊な設定は必要ありません。


== プロファイリング・ポイントの基本

この項は、プロジェクト内でプロファイリング・ポイントを設定したり、既存のプロファイリング・ポイントを表示および変更したりする方法に関する一般的なガイドです。プロファイリング・ポイントには異なるタイプがあり、ユース・ケースに応じたプロファイリング・ポイントを選択します。1つのプロジェクトに、いくつかの異なるプロファイリング・ポイントを関連付けることができます。そのプロファイリング・セッション中に取得する測定に従って、プロファイリング・ポイントを追加、削除、有効化、または無効化できます。


=== プロファイリング・ポイントの設定

プロファイリング・ポイントを設定するには、エディタ・ウィンドウでソース・コード内で行うのが最も簡単な方法です。単純に、プロファイリング・ポイントを設定するコード内の行を選択してから「新規プロファイリング・ポイント」ウィンドウを開くことができます。また、プロファイリング・セッションのオプションを構成しているときにもプロファイリング・ポイントを設定できます。

1. プロファイリング・ポイントを挿入するコードが含まれているファイルを開きます。
2. ソース・エディタで、プロファイリング・ポイントを追加する行を右クリックし、*「プロファイリング」*>*「プロファイリング・ポイントを挿入」*を選択して、新規プロファイリング・ポイント・ウィザードを開きます。
3. プロファイリング・ポイント・タイプとプロジェクトを選択します。「次」をクリックします。
image::images/ppoints-newstopwatch.png[title="「新規プロファイリング・ポイント」ダイアログ・ボックスのスクリーンショット"]

[start=4]
. プロファイリング・ポイントの名前を入力し、プロファイリング・ポイントのプロパティをカスタマイズします。「終了」をクリックします。

「終了」をクリックすると、プロファイリング・ポイント・タイプを表すアイコンが、ソース・エディタの左マージンの、プロファイリング・ポイントを挿入した行の横に表示されます。

image::images/ppoints-icons.png[title="ソース・エディタのマージン内のプロファイリング・ポイント注釈"] 


=== プロファイリング・ポイントの有効化、無効化、および編集

実行されているプロファイリング・セッションがない場合は、ソース・エディタまたは「プロファイリング・ポイント」ウィンドウで個々のプロファイリング・ポイントを編集、有効化、または無効化できます。すべてのプロファイリング・ポイントの一覧を表示するには、メイン・メニューから*「ウィンドウ」*>*「プロファイリング」*>*「プロファイリング・ポイント」*を選択して「プロファイリング・ポイント」ウィンドウを開きます。「プロファイリング・ポイント」ウィンドウには、プロファイリング・ポイントの現在のステータスが表示されます。

プロファイリング・セッションが実行されている場合は、「プロファイリング・ポイント」ウィンドウに各プロファイリング・ポイントにヒットした回数が表示され、結果のレポートも表示できるようになります。

image::images/ppoints-window.png[title="「プロファイリング・ポイント」ウィンドウのスクリーンショット"]

「プロファイリング・ポイント」ウィンドウを開き、プロファイリング・ポイント名を右クリックして「ソースを表示」を選択することによって、ソース・コード内の特定のプロファイリング・ポイントにすばやく移動できます。

プロファイリング・ポイントのステータスまたは設定を変更するには、次のいずれかを実行します。

* ソース・エディタで、マージン内のプロファイリング・ポイントのアイコンを右クリックし、ポップアップ・メニューで「プロファイリング・ポイント」を選択します。
* 「プロファイリング・ポイント」ウィンドウで、プロファイリング・ポイントを選択した後、ツールバーを使用してプロファイリング・ポイントを編集、除去、有効化、または無効化します。

または、一覧にあるプロファイリング・ポイント名を右クリックし、ポップアップ・メニューでコマンドを選択することもできます。

プロファイリング・ポイントを編集することを選択した場合は、「プロファイリング・ポイントのカスタマイズ」ダイアログ・ボックスが開きます。

image::images/ppoints-customize.png[title="「プロファイリング・ポイントのカスタマイズ」ダイアログ・ボックスのスクリーンショット"] 


=== プロジェクト内のアクティブなプロファイリング・ポイントの表示

メモリー使用状況またはアプリケーション・パフォーマンスを解析しているときにプロファイリング・ポイントを使用できます。プロファイリング・タスクを選択している場合は、そのプロファイリング・セッションに対してアクティブで有効になっているプロファイリング・ポイントを確認できます。

1. プロジェクト・ノードを右クリックし、「プロファイル」を選択して「プロファイリング・タスクの選択」ダイアログ・ボックスを開きます。
2. プロファイリング・タスク(CPUまたはメモリー)を選択します。
3. *「詳細(計測済)」*を選択します。
4. 設定ペインで*「アクティブなプロファイリング・ポイントを表示」*をクリックします。

アクティブなプロファイリング・ポイントを示すリンクは、「拡張」プロファイリング・オプションを選択した場合にのみ使用できます。

image::images/points-active.png[title="アクティブなプロファイリング・ポイントのダイアログ・ボックスのスクリーンショット"]

「アクティブなプロファイリング・ポイントを表示」をクリックすると、プロジェクトで設定されているすべてのプロファイリング・ポイントを一覧表示するダイアログ・ボックスが開きます。設定されているが無効になっているプロファイリング・ポイントは、グレー表示されます。

*注意:*プロファイリング・ポイントの設定を有効化、無効化、またはカスタマイズする場合は、「プロファイリング・ポイント」ウィンドウを開くか、またはプロジェクト内のプロファイリング・ポイントを検索します。


== プロファイリング・ポイントの操作

この項では、サンプル・プロジェクトを作成した後、ソース・コード内で異なるプロファイリング・ポイントを設定します。この課題では、異なるプロファイリング・ポイントを使用する方法を示します。


=== サンプル・プロジェクトの作成

このドキュメントでは、Anagram Gameサンプル・アプリケーションをプロファイリングするときにプロファイリング・ポイントを使用します。これを行うには、まず新規プロジェクト・ウィザードを使用してサンプル・アプリケーションを作成します。

Anagram Gameアプリケーションを作成するには、次の手順を実行します。

1. メイン・メニューから「ファイル」>「新規プロジェクト」を選択します。
2. 新規プロジェクト・ウィザードで、「サンプル」>「Java」カテゴリを選択します。
3. Anagram Gameプロジェクトを選択します。
4. プロジェクトの場所を指定します。「終了」をクリックします。

「終了」をクリックすると、IDEによってAnagram Gameサンプル・プロジェクトが作成されます。


[start=5]
. メイン・メニューから「実行」>「メイン・プロジェクトとして設定」>「AnagramGame」を選択します。

プロジェクトをメイン・プロジェクトに設定すると、Anagram Gameプロジェクトの名前が太字で「プロジェクト」ウィンドウに表示されます。デフォルトでは、IDEを使用してプロジェクトをプロファイルすると、IDEによってメイン・プロジェクトがプロファイルされます。メイン・プロジェクトとして設定されたプロジェクトがない場合、IDEでは、「プロジェクト」ウィンドウで選択されたプロジェクトがプロファイルされます。


=== コード・フラグメントの実行時間の測定

プロファイリング・ポイントにヒットしたときのタイムスタンプを取得するには、「ストップウォッチ」プロファイリング・ポイントを使用します。また、「ストップウォッチ」プロファイリング・ポイントを使用すると、2つのタイムスタンプ間の差異を計算することによって、コード・フラグメントの実行にかかった時間を測定することもできます。任意の数のストップウォッチ・プロファイリング・ポイントを設定できます。

「ストップウォッチ」プロファイリング・ポイントを設定する場合は、次のタイプのいずれかを選択します。

* *タイム・スタンプ。*このタイプは、プロファイリング・ポイントにヒットしたときのタイム・スタンプを取得します。
* *タイム・スタンプと期間。*このタイプを使用すると、コード・フラグメントの実行に要した時間を測定できます。測定するコード・フラグメントは、測定を開始する時点の「ストップウォッチ」プロファイリング・ポイントと、測定を終了する時点の別の「ストップウォッチ」プロファイリング・ポイントを設定することによって指定します。開始と終了のストップウォッチ・ポイントは、名前でペアになっています。

コード・フラグメントの実行時間を測定するには、次の手順を実行します。

1.  ``com.toy.anagrams.ui`` ソース・パッケージを展開し、 ``Anagrams.java`` をダブルクリックすることによって ``Anagrams.java`` クラスをエディタで開きます。
2. 測定を開始するソース・コード内の行(たとえば、54行目)を見つけます。
3. その行を右クリックし、ポップアップ・メニューから*「プロファイリング」>「プロファイリング・ポイントを挿入」*を選択します。
4. 「プロファイリング・ポイント・タイプ」として「*ストップウォッチ*」を選択します。「次」をクリックします。
5. 「設定」として「*タイムスタンプと期間*」を選択します。

「タイムスタンプと期間」を選択すると、ストップウォッチがコードのその行の先頭で開始し、次の行の最後で終了するようにダイアログ・ボックスによって自動的に設定されます。ストップウォッチが開始する行および停止する行は変更できます。


[start=6]
. 「*場所(停止)*」設定を変更して、終了行を開始行の数行後に変更します。「終了」をクリックします。
image::images/stopwatch-dialog.png[title="「新規プロファイリング・ポイント」ダイアログ・ボックスのスクリーンショット"]

プロファイリング・ポイントを設定すると、開始ポイントと終了ポイントの注釈がエディタの左マージンに表示されます。

image::images/ppoints-editor-stopwatch.png[title="プロファイリング・セッションに対してアクティブなプロファイリング・ポイント"]

「プロファイリング・ポイント」ウィンドウを開くと、「ストップウォッチ」プロファイリング・ポイントが一覧に追加されていることが確認できます。


[start=7]
. ツールバーの「メイン・プロジェクトのプロファイル」をクリックします。

[start=8]
. 「プロファイリング・タスクの選択」ダイアログ・ボックスで*「CPU」*プロファイリング・タスクをクリックし、*「詳細(計測済)」*オプションを選択します。
image::images/select-profiling-task1.png[title="「プロファイリング・タスクの選択」ダイアログ・ボックス"]

*注意:*プロファイリング・ポイントは、パフォーマンスまたはメモリー使用状況を解析するときに使用できます。


[start=9]
. 「*定義済みプロファイリング・ポイントを使用*」を選択します。「実行」をクリックして、プロファイリング・セッションを開始します。

「*アクティブなプロファイリング・ポイントを表示*」をクリックすると、そのプロファイリング・セッションに対して有効になっているプロファイリング・ポイントを表示できます。

image::images/ppoints-profile-stopwatch-act.png[title="プロファイリング・セッションに対してアクティブなプロファイリング・ポイント"]

「実行」をクリックすると、IDEによってAnagram Gameアプリケーションが起動され、プロファイリング・セッションが開始されます。「プロファイリング・ポイント」ウィンドウを開くと、「ストップウォッチ」プロファイリング・ポイントにヒットしたかどうかを確認できます。プロファイリング・ポイントにヒットした後、ウィンドウの「結果」列にある「*レポート*」をクリックすると、そのプロファイリング・ポイントに関するデータや、開始と終了のストップウォッチ・プロファイリング・ポイント間のコード・フラグメントの実行に要した時間を表示するウィンドウを開くことができます。

image::images/ppoints-result-stopwatch.png[title="「ストップウォッチ」プロファイリング・ポイントの結果のレポートのスクリーンショット"]

*注意:*初めてプロジェクトをプロファイリングしている場合、調整およびプロファイラの統合の詳細は、link:profiler-intro.html[+NetBeans IDEでのJavaアプリケーションのプロファイリングの概要+]を参照してください。


=== スナップショットまたはヒープ・ダンプの作成

非常に正確な瞬間にプロファイリング・データを取り込む場合は、プロファイリング・ポイントを使用して、プロファイリング結果またはヒープ(ヒープ・ダンプ)のスナップショットを作成できます。プロファイリング結果のスナップショット(メモリーやCPU)またはヒープ・ダンプを作成するには、ソース・コード内に「スナップショットの取得」プロファイリング・ポイントを配置し、スナップショットのタイプを選択して、ファイルが保存される場所を指定します。場所を指定しない場合は、すべてのスナップショットがメインのプロジェクト・フォルダ( ``nbproject/private`` )内に保存されます。

*注意:*「スナップショット」プロファイリング・ポイントを配置する場合は、頻繁に実行されるコード内にプロファイリング・ポイントを配置すると数百回ヒットする可能性があることに注意してください。

プロファイリング・ポイントを使用してスナップショットを作成するには、次の手順を実行します。

1.  ``com.toy.anagrams.ui`` ソース・パッケージを展開し、 ``Anagrams.java`` をダブルクリックすることによって ``Anagrams.java`` クラスをエディタで開きます。
2. プロファイリング・ポイントを配置するソース・コード内の行を見つけます。
3. その行を右クリックし、ポップアップ・メニューから*「プロファイリング」>「プロファイリング・ポイントを挿入」*を選択します。
4. 「プロファイリング・ポイント・タイプ」として「*スナップショットの取得*」を選択します。「次」をクリックします。
5. 「設定」として「*プロファイリング・データのスナップショット*」または「*ヒープ・ダンプ*」のどちらかを選択します。
6. ファイルが保存される場所を指定するか、またはデフォルトの場所のままにします。「終了」をクリックします。
image::images/ppoints-profile-snapheap.png[title="「ヒープ・ダンプ」が選択された新しい「スナップショットの取得」プロファイリング・ポイント"]

[start=7]
. ツールバーの「メイン・プロジェクトのプロファイル」をクリックします。

[start=8]
. 「プロファイリング・タスクの選択」ダイアログ・ボックスで*「CPU」*または*「メモリー」*をクリックし、*「詳細(計測済)」*オプションを選択します。

[start=9]
. 「*定義済みプロファイリング・ポイントを使用*」を選択します。「実行」をクリックして、プロファイリング・セッションを開始します。

「*アクティブなプロファイリング・ポイントを表示*」をクリックすると、そのプロファイリング・セッションに対して有効になっているプロファイリング・ポイントを表示できます。

「実行」をクリックすると、IDEによってAnagram Gameアプリケーションが起動され、プロファイリング・セッションが開始されます。「プロファイリング・ポイント」ウィンドウを開くと、「スナップショットの取得」プロファイリング・ポイントにヒットしたかどうかを確認できます。プロファイリング・ポイントにヒットした場合は、「結果」列にある「*レポート*」をクリックすると、そのプロファイリング・ポイントに関するデータを表示する「スナップショットの取得」ウィンドウを開くことができます。スナップショットを表示するには、「スナップショットの取得」ウィンドウで「スナップショットを開く」をクリックします。

スナップショット・ポイントをリセット・ポイントと効果的にペアにすると、ヒープの差分を生成できます。

「スナップショットの取得」プロファイリング・ポイントを使用した場合、結果のスナップショットまたはヒープ・ダンプは指定された場所に自動的に保存されます。スナップショットをプロジェクト・フォルダに保存するように指定した場合、保存されたスナップショットは、「プロファイラ」ウィンドウ内の「保存スナップショット」リストに自動的に表示されます。「保存スナップショット」リスト内のスナップショットは、その項目を選択し、「開く」をクリックすることによって開くことができます。

*注意:*スナップショットをプロジェクト・フォルダ以外の場所に保存するように指定した場合、スナップショットは「保存スナップショット」リストに自動的に一覧表示されません。「保存スナップショット」リストに一覧表示されていないスナップショットを開くには、リストの横にある「ロード」ボタンをクリックし、保存されたスナップショットの場所に移動します。

image::images/saved-snapshots.png[title="新しい「結果のリセット」ペインのスクリーンショット"]

スナップショットとヒープ・ダンプの操作の詳細は、次のドキュメントを参照してください。

* スナップショットの表示と比較の詳細は、link:profiler-intro.html[+プロファイリングの概要+]チュートリアルのスナップショットの作成の項を参照してください。


=== プロファイリング結果のリセット

ソース・コード内に「結果のリセット」プロファイリング・ポイントを配置することによって、指定された任意の正確なポイントで、収集された結果(メモリーまたはCPU)をリセットできます。

「結果のリセット」プロファイリング・ポイントを設定するには、次の手順を実行します。

1.  ``com.toy.anagrams.ui`` ソース・パッケージを展開し、 ``Anagrams.java`` をダブルクリックすることによって ``Anagrams.java`` クラスをエディタで開きます。
2. プロファイリング・ポイントを配置するソース・コード内の行を見つけます。
3. その行を右クリックし、ポップアップ・メニューから*「プロファイリング」>「プロファイリング・ポイントを挿入」*を選択します。
4. 「プロファイリング・ポイント・タイプ」として「*結果のリセット*」を選択します。「次」をクリックします。
5. プロファイリング・ポイントの名前を指定し、そのプロファイリング・ポイントの場所が正しいことを確認します。「終了」をクリックします。
image::images/ppoints-newreset.png[title="新しい「結果のリセット」ペインのスクリーンショット"]

[start=6]
. ツールバーの「メイン・プロジェクトのプロファイル」をクリックします。

[start=7]
. 「プロファイリング・タスクの選択」ダイアログ・ボックスで*「CPU」*または*「メモリー」*をクリックし、*「詳細(計測済)」*オプションを選択します。

[start=8]
. 「*定義済みプロファイリング・ポイントを使用*」を選択します。「実行」をクリックして、プロファイリング・セッションを開始します。

「*アクティブなプロファイリング・ポイントを表示*」をクリックすると、そのプロファイリング・セッションに対して有効になっているプロファイリング・ポイントを表示できます。

「実行」をクリックすると、IDEによってAnagram Gameアプリケーションが起動され、プロファイリング・セッションが開始されます。「プロファイリング・ポイント」ウィンドウを開くと、「結果のリセット」プロファイリング・ポイントにヒットしたかどうかを確認できます。プロファイリング・ポイントにヒットした場合は、「結果」列にある「*レポート*」をクリックして、そのプロファイリング・ポイントに関するデータを表示するウィンドウを開くことができます。

image::images/ppoints-results-reset.png[title="「リセット」プロファイリング・ポイントの結果のレポートのスクリーンショット"]link:/about/contact_form.html?to=3&subject=Feedback:%20Using%20Profiling%20Points[+このチュートリアルに関するご意見をお寄せください+]



== 関連項目

このドキュメントでは、単純なNetBeansプロジェクトをプロファイリングするときにプロファイリング・ポイントを使用する方法の基本を示しました。上に概要を示した手順は、ほとんどのプロジェクトのプロファイリングに適用できます。このドキュメントで説明されていないプロファイリング設定および機能の詳細は、IDEに含まれ、「ヘルプ」メニュー項目から使用できるドキュメントを参照してください。

関連ドキュメントについては、次のリソースを参照してください。

* link:http://wiki.netbeans.org/wiki/view/NetBeansUserFAQ#section-NetBeansUserFAQ-Profiler[+NetBeansプロファイラのFAQ+]
NetBeans IDEでのアプリケーションのプロファイリングに関連した、よくある質問を含むドキュメント
* link:http://wiki.netbeans.org/wiki/view/FaqProfilerProfileFreeForm[+FAQ: 自由形式プロジェクトのプロファイリング+]
* link:profiler-screencast.html[+スクリーンキャスト: プロファイリング・ポイント、ドリルダウン・グラフ、ヒープ・ウォーカ+]
NetBeans IDEのいくつかのプロファイリング機能を示すデモ
* link:../../../community/magazine/html/04/profiler.html[+詳細なプロファイリング: 実行理論+]
* link:http://profiler.netbeans.org/index.html[+profiler.netbeans.org+]
NetBeansプロファイラ・プロジェクトのサイト
* link:http://blogs.oracle.com/nbprofiler[+NetBeansプロファイラのブログ+]
* link:http://profiler.netbeans.org/mailinglists.html[+NetBeansプロファイラのメーリング・リスト+]

<<top,先頭>>

