【问题标题】:How to profile a Java program run from start to finish?如何分析从头到尾运行的 Java 程序?
【发布时间】:2018-10-17 18:14:06
【问题描述】:

我有一个只运行大约 20-30 秒的 Java 程序,我想对其进行分析。

每次启动时手动启动 jvisualvm 分析器并不可靠,因为操作 UI 会浪费几秒钟的时间。

有没有办法分析整个执行过程,比如不再起作用的旧 -Xhprof:cpu=samples?

【问题讨论】:

标签: java profiling performance-testing


【解决方案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

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

我发现这比 VisualVM 更难使用,但产生的结果更详细,噪音更小。也就是说,分析器本身导致的分配要少得多。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-05-28
    • 1970-01-01
    • 2013-08-14
    • 2015-09-26
    • 1970-01-01
    • 1970-01-01
    • 2011-11-27
    相关资源
    最近更新 更多