java.lang.Object | +--oracle.jdeveloper.profiler.ProfilerAPI
java.lang.Object
を拡張
プロファイリング機能のコードレベル・サポートを提供するユーティリティ・クラス
このクラスは、プロファイリングのコード・インスツルメント処理を可能にする一連の静的メソッドを含みます。インスツルメント処理されたコードは、すべてのVMまたはOJVMの全モードで実行されますが、OJVMではプログラムをプロファイリング・モードで実行した場合にのみインスツルメント処理が有効になります。その他の場合は、実装が「透過」になるよう設計されており、インスツルメント処理が適切に実行されるかぎり実行ペナルティが追加されないようになっています。
このクラスは現在、JDeveloperの2つのプロファイリング・モードである、実行プロファイリングおよびイベント・プロファイリングをサポートしています。
「startSampling()
stopSampling()」
を参照してください。
サンプリング・コード実装の典型的な例を次に示します。
public void foo()
{
ProfilerAPI.startSampling(); // Starts the sampler
// execute some code
ProfilerAPI.stopSampling(); // Stops the sampler
}
サンプリング開始/停止のネストしたコールは許可されています。
VMおよび一部のライブラリでイベントが生成される場合でも、有効なイベント・プロファイリングにはコード・インスツルメント処理が必須です。ProfilerAPIクラスによって実行できます。
イベントには、次の属性があります。
static final int CSTXXX
を使用することをお薦めします。OJVMでは0から99までのイベントIDが生成されますが、イベントIDの単一性はAPIで強制されていません。
推奨するイベント・インスツルメント処理は、次のとおりです。:
class foo
{
private static final int EVENT_ID = 500;
private static final boolean EVENT_ON =
ProfilerAPI.isActive && ProfilerAPI.isEventActive(EVENT_ID);
// some code
String getInfo(String request)
{
int eventHandler = -1; // default value
if (EVENT_ON)
{
eventHandler = ProfilerAPI.startEvent(EVENT_ID, "Getting info for " + request + "\n");
}
try
{
// some code
if (simpleRequest)
{
if (EVENT_ON)
{ // might be useful for the user
ProfilerAPI.addComment(eventHandler, " Simple request\n");
}
// actual code of the simple request
}
else
{
if (EVENT_ON)
{ // might be useful for the user
ProfilerAPI.addComment(eventHandler, " Complex request\n");
}
// actual code of the complex request
}
}
catch (Throwable e)
{
if (EVENT_ON)
{
ProfilerAPI.addComment(eventHandler, " Interrupted with exception " + e);
}
throw(e);
}
finally
{
if (EVENT_ON)
{
ProfilerAPI.endEvent(eventHandler, " Result = " + res);
}
}
return res;
}
// other methods
}
この実装は複雑に見えますが、あらゆるケースについて処理を試行しています。イベント・プロファイリング以外では、パフォーマンス・ペナルティはほとんどありません。ユーザーのコードで例外がスローされないと判明している場合は、すべての try
/ catch
/ finally
構造は役に立ちません。1回のみ評価された静的ブールを使用すると、プロファイリングなしの場合にパフォーマンス・ペナルティが最小限になります。このProfilerAPIファンクションを即時に戻すという「トリック」を使用しなくても適切に動作しますが、すべてのメソッド引数はそれより先に評価されてしまっています。
フィールド要約 | |
---|---|
static boolean
|
isActive |
メソッド要約 | |
---|---|
static void
|
addComment (int handle, boolean o) イベントにコメントを追加します。 |
static void
|
addComment (int handle, char o) イベントにコメントを追加します。 |
static void
|
addComment (int handle, char[] o) イベントにコメントを追加します。 |
static void
|
addComment (int handle, char[] o, int offset, int count) イベントにコメントを追加します。 |
static void
|
addComment (int handle, double o) イベントにコメントを追加します。 |
static void
|
addComment (int handle, float o) イベントにコメントを追加します。 |
static void
|
addComment (int handle, int o) イベントにコメントを追加します。 |
static void
|
addComment (int handle, long o) イベントにコメントを追加します。 |
static void
|
addComment (int handle, java.lang.Object o) イベントにコメントを追加します。 |
static void
|
addComment (int handle, java.lang.String o) イベントにStringコメントを追加します。 |
static void
|
addStackToComment (int handle) コメントに現在のスタックを追加します。 |
static void
|
clearEventHistory () 完了していないもの以外のイベントをすべて消去します。 |
static void
|
dumpEventHistory () stderrで現在格納されているイベントを印刷します。 |
static void
|
endEvent (int handle) イベントを終了します。 |
static void
|
endEvent (int handle, java.lang.String comment) イベントを終了します。 |
static boolean
|
isEventActive (int event) この特定のイベントIDが、この実行中にアクティブかどうかを確認します。 |
static void
|
pulseEvent (int event, java.lang.String comment) パルス・イベントを作成します。 |
static int
|
startEvent (int event) このイベントに対する追加参照すべてに使用する必要があるハンドルを戻します。 |
static int
|
startEvent (int event, java.lang.String comment) このイベントへの追加参照に必須のハンドルを戻します。 |
static void
|
startSampling() サンプリングを開始します。このコールはstopSampling()とペアにする必要があります。 |
static void
|
stopSampling() サンプリングを停止します。このコールは、startSampling()とペアにする必要があります。 |
クラスjava.lang.Objectから継承したメソッド |
---|
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
|
フィールド詳細 |
---|
public static boolean isActive
メソッド詳細 |
public static void startSampling()
stopSampling()
とペアにする必要があります。
stopSampling
への最も外側のコールが実行されるまで、サンプリングはオンになっています。
stopSampling()
public static void stopSampling()
startSampling()
とペアにする必要があります。
startSampling()
public static int startEvent(int event, java.lang.String comment)
このコールはendEvent
へのコールとペアにする必要があります。
同一IDを持つ複数のイベントは個別に開始および終了できます。
このコール中に、開始時間およびコード位置が評価されます。
コメントString
引数はVM内に格納されます。以降のコメントは追加されます。
イベント・プロファイラがアクティブ化されていないか、このイベントがアクティブでない場合、戻り値は-1です。引き続き実行されたイベント機能へのコールはすべて即時に戻されます。このため、ハンドルを-1へ初期化することをお薦めします。
event
- イベントIDです。
comment
- コメントです。
endEvent(int)
, endEvent(int, String)
public static int startEvent(int event)
このコールはendEvent
へのコールとペアにする必要があります。
同一IDを持つ複数のイベントは個別に開始および終了できます。
このコールはstartEvent(event, null);
と同じです。
event
- イベントIDです。
startEvent(int, String)
, endEvent(int)
, endEvent(int, String)
public static void endEvent(int handle, java.lang.String comment)
このコールはstartEvent
へのコールとペアにする必要があります。ハンドラはstartEvent
ファンクションによって提供されたか、または-1である必要がありました。その他の値は無視され、stderr
に警告メッセージが作成されます。
同一IDを持つ複数のイベントは個別に開始および終了できます。
終了時間はこのコール中に評価されます。
コメントString
引数は現在のコメントに追加されます。
イベントIDが終了すると、この特定のハンドルを使用して追加のコールは作成できません。endEvent
は、このイベントを生成する最後のコールにする必要があります。
handle
- イベント・ハンドルです。
comment
- コメントです。
endEvent(int)
, startEvent(int, String)
, startEvent(int)
public static void endEvent(int handle)
このコールはstartEvent
へのコールとペアにする必要があります。ハンドラはstartEvent
ファンクションによって提供されたか、または-1である必要がありました。その他の値は無視され、stderr
に警告メッセージが作成されます。
同一IDを持つ複数のイベントは個別に開始および終了できます。
endEvent(handle, null);
と同じです。終了時間はこのコール中に評価されます。
イベントIDが終了すると、この特定のハンドルを使用して追加のコールは作成できません。endEvent
は、このイベントを生成する最後のコールにする必要があります。
handle
- イベント・ハンドルです。
comment
- コメントです。
endEvent(int, String)
, startEvent(int, String)
, startEvent(int)
public static void pulseEvent(int event, java.lang.String comment)
このコール中に位置、開始時間および終了時間を評価します。
このファンクションでは、有効な継続時間を持たないイベントの作成が可能です。
event
- イベントIDです。
comment
- コメントです。
public static boolean isEventActive(int event)
このファンクションは、余分な負荷を避けるため、この特定の実行でイベントを必要としない場合に使用してください。
event
- イベントIDです。
public static void addComment(int handle, java.lang.String o)
String
コメントを追加します。
ハンドラはstartEvent
ファンクションで提供されたか、または-1である必要がありました。それ以外の値は無視され、警告メッセージがstderr
に作成されます。
コメントは現在のコメントの末尾に追加されます。
handle
- イベント・ハンドルです。
Comment
- コメントです。
startEvent(int, String)
, startEvent(int)
public static void addStackToComment(int handle)
ハンドラはstartEvent
ファンクションで提供されたか、または-1である必要がありました。それ以外の値は無視され、警告メッセージがstderr
に作成されます。
現在のスタックは現在のコメントの末尾に追加されます。
handle
- イベント・ハンドルです。
Comment
- コメントです。
startEvent(int, String)
, startEvent(int)
public static void clearEventHistory()
public static void dumpEventHistory()
stderr
に現在格納されているイベントを印刷します。
public static void addComment(int handle, java.lang.Object o)
ハンドラはstartEvent
ファンクションで提供されたか、または-1である必要がありました。それ以外の値は無視され、警告メッセージがstderr
に作成されます。
コメントは現在のコメントの末尾に追加されます。
addComment(handle, String.valueOf(o))
と同じです
handle
- イベント・ハンドルです。
o
- コメントです。
startEvent(int, String)
, startEvent(int)
public static void addComment(int handle, int o)
ハンドラはstartEvent
ファンクションで提供されたか、または-1である必要がありました。それ以外の値は無視され、警告メッセージがstderr
に作成されます。
コメントは現在のコメントの末尾に追加されます。
addComment(handle, String.valueOf(o))
と同じです
handle
- イベント・ハンドルです。
o
- コメントです。
startEvent(int, String)
, startEvent(int)
public static void addComment(int handle, char o)
ハンドラはstartEvent
ファンクションで提供されたか、または-1である必要がありました。それ以外の値は無視され、警告メッセージがstderr
に作成されます。
コメントは現在のコメントの末尾に追加されます。
addComment(handle, String.valueOf(o))
と同じです
handle
- イベント・ハンドルです。
o
- コメントです。
startEvent(int, String)
, startEvent(int)
public static void addComment(int handle, Boolean o)
ハンドラはstartEvent
ファンクションで提供されたか、または-1である必要がありました。それ以外の値は無視され、警告メッセージがstderr
に作成されます。
コメントは現在のコメントの末尾に追加されます。
addComment(handle, String.valueOf(o))
と同じです
handle
- イベント・ハンドルです。
o
- コメントです。
startEvent(int, String)
, startEvent(int)
public static void addComment(int handle, float o)
ハンドラはstartEvent
ファンクションで提供されたか、または-1である必要がありました。それ以外の値は無視され、警告メッセージがstderr
に作成されます。
コメントは現在のコメントの末尾に追加されます。
addComment(handle, String.valueOf(o))
と同じです
handle
- イベント・ハンドルです。
o
- コメントです。
startEvent(int, String)
, startEvent(int)
public static void addComment(int handle, double o)
ハンドラはstartEvent
ファンクションで提供されたか、または-1である必要がありました。それ以外の値は無視され、警告メッセージがstderr
に作成されます。
コメントは現在のコメントの末尾に追加されます。
addComment(handle, String.valueOf(o))
と同じです
handle
- イベント・ハンドルです。
o
- コメントです。
startEvent(int, String)
, startEvent(int)
public static void addComment(int handle, long o)
ハンドラはstartEvent
ファンクションで提供されたか、または-1である必要がありました。それ以外の値は無視され、警告メッセージがstderr
に作成されます。
コメントは現在のコメントの末尾に追加されます。
addComment(handle, String.valueOf(o))
と同じです
handle
- イベント・ハンドルです。
o
- コメントです。
startEvent(int, String)
, startEvent(int)
public static void addComment(int handle, char[] o)
ハンドラはstartEvent
ファンクションで提供されたか、または-1である必要がありました。それ以外の値は無視され、警告メッセージがstderr
に作成されます。
コメントは現在のコメントの末尾に追加されます。
addComment(handle, String.valueOf(o))
と同じです
handle
- イベント・ハンドルです。
o
- コメントです。
startEvent(int, String)
, startEvent(int)
public static void addComment(int handle, char[] o, int offset, int count)
ハンドラはstartEvent
ファンクションで提供されたか、または-1である必要がありました。それ以外の値は無視され、警告メッセージがstderr
に作成されます。
コメントは現在のコメントの末尾に追加されます。
addComment(handle, String.valueOf(o))
と同じです
handle
- イベント・ハンドルです。
o
- コメントです。
startEvent(int, String)
, startEvent(int)
Copyright © 1997, 2006, Oracle. All rights reserved.