java - 分析短期 Java 应用程序

标签 java optimization profiling profiler

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

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

最佳答案

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

它提供了两种方法:

  1. 采样堆栈上的 Activity 方法
  2. 计时 使用注入(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/

相关文章:

java - 跟踪对象生命周期

java - 十六进制字符串转十六进制

java - 将 JavaRDD<List<SomeClass>> 转换为 JavaRDD<SomeClass>

optimization - 将表设置为空或将表的所有元素设置为 nil 哪个更好?

python - 带有 numpy 的范围数组

C# ASP.NET VS 2010 专业分析器

java - 使用从 Kura OSGi 包中的库创建的现有插件项目

java - 报告生成进程的进度百分比

optimization - 如何使用值作为 redis 中的列表对这个哈希进行建模?

go - 如何使用 pprof 工具分析基准?