JDeveloperでプログラムのリモート・プロファイリングを実行するには、コマンドラインからJavaプロセスを開始した後、プロファイラ・エージェントを起動する必要があります。プロセスの開始後は、JDeveloperプロファイラをプロファイラ・エージェントに接続できます。
プロファイラ・エージェントは、-agentlib
または-agentpath
オプションを使用して起動できます。
-agentlibオプションを使用したプロファイラ・エージェントの起動:
コマンドラインで、次の実行文字列を入力します。
java -agentlib:<Profiler-Agent-Library>=<sub-option1>[=<value1>],<sub-option2>[=<value2>]... -classpath <Project_Directory>\classes <Java_Main_Class>
注意: -agentlib
を指定する際には、.dll拡張子を除くエージェントの絶対パスを指定するか、エージェントのパスをPATH変数に追加してから絶対パスおよび拡張子なしでエージェントを指定できます。
例:
java -agentlib:C:¥JDeveloper¥jdeveloper¥jdev¥lib¥profiler16=jarpath=C:¥JDeveloper¥jdeveloper¥jdev¥lib¥profiler-agent.jar,port=4000,enable=t,startup=connect -classpath c:¥MyApp¥MyProject¥classes MyMainClass
set PATH=C:¥JDeveloper¥jdeveloper¥jdev¥lib;%PATH%
java -agentlib:profiler16=jarpath=C:¥JDeveloper¥jdeveloper¥jdev¥lib¥profiler-agent.jar,port=4000,enable=t,startup=connect -classpath c:¥MyApp¥MyProject¥classes MyMainClass
-agentpathオプションを使用したプロファイラ・エージェントの起動:
コマンドラインで、次の実行文字列を入力します。
java -agentpath:<Path_to_Agent_Library>=<option1>[=<value1>],<option2>[=<value2>]... -classpath <Project_Directory>\classes <Java_Main_Class>
ここで
<Path_to_Agent_Library>
はprofiler16.dll
へのフルパスです。たとえば、<jdev_install>¥jdeveloper¥jdev¥lib¥
profiler16.dll
です。
注意: -agentpath
を指定する際には、.dll
拡張子を含むエージェントへの絶対パスを指定する必要があります。
例:
java -agentpath:C:¥JDeveloper¥jdeveloper¥jdev¥lib¥profiler16.dll=jarpath=C:¥JDeveloper¥jdeveloper¥jdev¥lib¥profiler-agent.jar,port=4000,enable=t,startup=connect,depth=1000,interval=20 -classpath c:¥MyApp¥MyProject¥classes MyMainClass
-agentlib
および-agentpath
オプションで使用できるサブオプション:port=<port>
データの転送に使用するポートを指定します。デフォルトは4000です。
jarpath=<path>
プロファイラJARファイルのパス。このJARは、<jdev_install>¥jdeveloper¥jdev¥lib¥profiler-agent.jar
にあります。JARのパスを指定しない場合、JARはブートストラップ・クラスパスにある必要があります。
enable=[t][c][m][r]
エージェント機能を有効にします。t
= CPU時間サンプリング、m
= メモリー新規/GC、c
= メソッド・コール・カウント、r
= ヒープ参照スナップショット。t
、c
またはm
のうちの1つのみを指定できます。r
はm
と組み合せたり、単独で指定できます。
startup=time|mem|count|refs|connect
起動時にユースケースを開始する場合は、次のいずれかを指定できます。
time
- CPU時間サンプリングcount
- メソッド・コール・カウントmem
- メモリー割当て/解放refs
- ヒープ参照スナップショット(memと組み合せたり単独で指定できます)connect
- 接続を待機してからアプリケーションの実行を許可 プロファイラが接続されていない場合は、ユースケースを実行できません。
注意:startup=mem,refs
は、プロファイラ・エージェントのメモリー機能およびヒープ参照スナップショット機能も有効にします(enable
= m
r
)。password=<password>
接続に使用するパスワードを設定します。プロファイラによる接続時にパスワード文字列が送信されない場合、エージェントは接続を拒否します。このオプションを選択すると、友好的なユーザーが誤って接続してしまうことがありません。このオプションを指定しない場合、パスワードは必要ありません。
注意: このオプションを指定した場合、パスワードはクリアテキストで送信されるため、非友好的なユーザーによって傍受される可能性があります。
depth=<size>
コレクションに使用するスタックの深度の最大値を設定します。デフォルトは1000
です。
interval=<sample-interval>
サンプリングの間隔(ミリ秒単位)。デフォルトは20
です。
注意: このことは、CPU時間サンプリングにのみ適用されます。
wait=y|n
待機時間およびブロック時間をレポートします。デフォルトはn
です。
注意: このことは、CPU時間サンプリングにのみ適用されます。
refpath=<path>
参照スナップショット・ファイルの書込みに使用するパスを設定します。enable=r
を指定した場合に必要です。
注意: すべてのスナップショットに同じパスが使用されるので、次のユースケースが終了する前にファイルがコピーされていることが重要です。このことは、プロファイラおよびファイル・クライアントによって自動的に行われます。
stackfilter=<expression>
スタック・トレースに含める、または除外するクラスを指定します。次に例を示します。
stackfilter=(!java.lang.*)
この式により、レポートされるスタック・トレースには、名前がjava.lang.*
で始まるクラスが含まれなくなります。たとえば、java.lang.Integer
およびjava.lang.reflect.Method
が含まれるスタック・トレースは表示されません。こうしたメソッドで使用されるときはいつでも収集され、次のコール元で追加されます。
methodfilter=<expression>
式で指定されたメソッドを含むスタックのみを収集します。次に例を示します。
methodfilter=(com.mycorp.MyClass.MyMethod*)
この式により、スタックにcom.mycorp.MyClass.myMethod
への1つ以上のコールが含まれない場合、スタックは表示されなくなります。フィルタに*
を指定すると、あらゆるタイプのシグネチャのメソッドが収集されます。Javaでは、一致する複数のメソッドが存在する場合があります。
memfilter=<expression>
メモリー・レポートに含める、または除外するオブジェクト・クラス。
memfilter=(!java.lang)
この式では、文字列にjava.lang
が含まれるクラスは表示されません。
java
-agentlib:profiler16=port=4000,jarpath=C:¥JDeveloper¥jdeveloper¥jdev¥lib¥profiler-agent.jar,enable=t,depth=1000,startup=time,interval=20
-classpath C:¥JDeveloper¥jdeveloper¥mywork¥Application1¥Project1¥classes project1.Application1
java
-agentlib:profiler16=port=4000,jarpath=C:¥JDeveloper¥jdeveloper¥jdev¥lib¥profiler-agent.jar,enable=m,startup=connect
-classpath C:¥JDeveloper¥jdeveloper¥mywork¥Application1¥Project1¥classes project1.Application1
java
-agentlib:profiler16=port=4000,jarpath=C:¥JDeveloper¥jdeveloper¥jdev¥lib¥profiler-agent.jar,startup=connect,mem
-classpath C:¥JDeveloper¥jdeveloper¥mywork¥Application1¥Project1¥classes project1.Application1
java -agentpath:C:¥JDeveloper¥jdeveloper¥jdev¥lib¥profiler16.dll=jarpath=C:¥JDeveloper¥jdeveloper¥jdev¥lib¥profiler-agent.jar,port=4000,enable=t,startup=connect,depth=1000,interval=20
-classpath
C:¥JDeveloper¥jdeveloper¥mywork¥Application1¥Project1¥classes project1.Application1
Copyright © 1997, 2009, Oracle. All rights reserved.