是否有任何 Java 分析器可以分析短期应用程序?到目前为止,我发现的分析器似乎适用于在用户终止之前一直运行的应用程序。但是,我想分析像命令行实用程序一样工作的应用程序,它会立即运行和退出。 visualvm 或 NetBeans Profiler 等工具甚至无法识别应用程序是否已运行。
我正在寻找类似于 Python 的 cProfile 的东西,因为当应用程序退出时会返回探查器结果。
最佳答案
您可以使用 JVM 内置 HPROF 分析您的应用程序。
它提供了两种方法:
- 采样堆栈上的 Activity 方法
- 计时 使用注入(inject)字节码(BCI,字节码注入(inject))的方法执行时间
采样
此方法揭示了在堆栈顶部找到方法的频率。
java -agentlib:hprof=cpu=samples,file=profile.txt ...
时机
此方法计算方法的实际调用次数。检测代码已由 JVM 预先注入(inject)。
java -agentlib:hprof=cpu=times,file=profile.txt ...
注意:此方法会大大减慢执行时间。
对于这两种方法,如果 file=
选项不存在,则默认文件名为 java.hprof.txt
。
可以使用 java -agentlib:hprof=help
获得完整的帮助,或者可以在 Oracles documentation 上找到
关于java - 分析短期 Java 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2656059/