分析短期Java应用程序

eje*_*jel 8 java optimization profiler profiling

是否有任何Java分析器允许分析短期应用程序?到目前为止,我发现的分析器似乎适用于在用户终止之前一直运行的应用程序.但是,我想要分析像命令行实用程序一样工作的应用程序,它会立即运行和退出.像visualvm或NetBeans Profiler这样的工具甚至无法识别应用程序是否已运行.

我正在寻找类似于Python的cProfile的东西,因为当应用程序退出时会返回探查器结果.

小智 8

您可以使用JVM内置HPROF来分析您的应用程序.

它提供了两种方法:

  1. 对堆栈上的活动方法进行采样
  2. 使用注入字节码的时序方法执行时间(BCI,字节码编码注入)

采样

此方法显示了在堆栈顶部找到方法的频率.

java -agentlib:hprof=cpu=samples,file=profile.txt ...
Run Code Online (Sandbox Code Playgroud)

定时

此方法计算方法的实际调用.仪表代码已由JVM预先注入.

java -agentlib:hprof=cpu=times,file=profile.txt ...
Run Code Online (Sandbox Code Playgroud)

注意:此方法会大大减慢执行时间.


对于这两种方法,java.hprof.txt如果该file=选项不存在,则默认文件名为.

可以使用java -agentlib:hprof=help或可以在Oracles文档中找到完整的帮助


McD*_*ell 5

Sun Java 6的java -Xprof交换机可以为您提供一些分析数据.

-Xprof            output cpu profiling data
Run Code Online (Sandbox Code Playgroud)