0

現在、プロファイリングしたい Java コードがいくつかあります。Java Mission Control に関するいくつかの有望な情報を読んだ後、Java Mission Control を使用することにしました。ただし、これまでに参照したすべてのリソースは、最初にプロファイリングするプロセスを最初に開始し、それが既に実行されている場合にのみ、Mission Control からコードを「アタッチ」またはプロファイリングするように指示しています (たとえば、オラクルからのこのビデオ: https ://youtu.be/WMEpRUgp9Y4?t=14m56s )。

最初からプロファイリングでプロセスを開始する方法はありますか? ありがとう

4

3 に答える 3

0

JDK11:

-XX:StartFlightRecording

JDK9、JDK10:

-XX:+UnlockCommercialFeatures
-XX:StartFlightRecording

JDK 8u40、

-XX:+UnlockCommercialFeatures
-XX:StartFlightRecording=name=whatever

JDK 7u4、JDK 8u20:

-XX:+UnlockCommercialFeatures 
-XX:+FlightRecorder 
-XX:StartFlightRecording=name=whatever

プロセスに一緒にアタッチすることを避けたい場合は、ファイル名を指定できます (つまり、-XX:StartFlightRecording=filename=rec.jfr)。次に、期間を設定して一定期間後に記録をダンプします (つまり、duration=60s)。 JVMの終了時にのみ発生させたい場合:

 -XX:StartFlightRecording=
 filename=rec.jfr,dumponexit=true

JMCで記録ファイルを開いてから開くことができます。JDK 11 では、これがさらに簡素化されているため、指定する必要があるのは次のとおりです。

 -XX:StartFlightRecording:filename=c:\recs

ファイル名は指定されたディレクトリに生成され、JVM の終了時に自動的にダンプされます。

于 2018-06-16T22:44:11.887 に答える