如何分析从头到尾运行的Java程序?

时间:2018-10-17 18:14:06

标签: java profiling performance-testing

我有一个Java程序,其运行时间仅约20-30秒,我想对其进行概要分析。

每次启动时手动启动jvisualvm profiler都是不可靠的,因为您会花费几秒钟来操作UI。

是否有一种方法可以描述整个执行方式,例如不再起作用的旧-Xhprof:cpu=samples

1 个答案:

答案 0 :(得分:1)

使用Flight Recorder,您可以将其添加到命令行

-XX:+UnlockCommercialFeatures -XX:+FlightRecorder 
-XX:FlightRecorderOptions=defaultrecording=true,dumponexit=true,settings=profile

https://docs.oracle.com/javacomponents/jmc-5-5/jfr-runtime-guide/run.htm#JFRRT176

它仅在新的TLAB上记录内存分配,因此我使其比默认值小得多,以获取更多样本。

-XX:TLABSize=128k

您需要从jmc目录运行$JAVA_HOME/bin,以打开创建的.jfr文件。

我发现它比VisualVM难于使用,但是产生的结果更加详细,噪音也更少。也就是说,您通过探查器本身获得的分配要少得多。