java - Java -Xprof 输出的解释

标签 java profiler

我正在尝试解释通过指定 -Xprof 标志生成的分析输出。

对于我的应用程序,我得到这样的分析输出:

 Flat profile of 8.34 secs (775 total ticks): main
  Interpreted + native   Method
 10.4%    66  +    12    java.lang.ClassLoader.defineClass1
  3.6%    27  +     0    java.nio.HeapCharBuffer.<init>
  2.5%     1  +    18    java.io.UnixFileSystem.getBooleanAttributes0
...
 74.4%   380  +   179    Total interpreted (including elided)
     Compiled + native   Method
  0.3%     0  +     2    java.util.jar.JarFile$1.hasMoreElements
  0.3%     0  +     2    org.reflections.vfs.ZipDir$1$1.computeNext
  0.1%     0  +     1    java.lang.Object.<init>
...
  1.7%     3  +    10    Total compiled
         Stub + native   Method
  7.5%     0  +    56    java.util.zip.ZipFile.getEntry
  4.7%     0  +    35    java.lang.Object.getClass
  3.2%     0  +    24    java.lang.System.arraycopy
...
 23.2%     0  +   174    Total stub
  Thread-local ticks:
  3.1%    24             Blocked (of total)
  0.7%     5             Class loader

对于每个线程。我的问题是 InterpretedCompiledStub 方法有什么区别,什么是 Thread-local ticks+ native 列的含义是什么? -Xprof 探查器是否有任何规范文档?谷歌搜索 Xprof 收效甚微。

最佳答案

我唯一能找到有关 XProf 等工具的信息的地方是一些(稍旧的)纸质 Java 书籍。

  • Interpreted + native:该图显示了 JVM 在执行解释方法时使用的滴答。额外的(+ native )列显示了这些解释方法调用的 native C 方法。
  • Compiled + native:此图显示了已被 JIT compiler 解析的方法所使用的滴答声。 .运行您的程序一段时间后,解释部分中的大多数主要消费者应该显示为“已编译”,因为 JIT 将编译它们。
  • Stubs + native:此图用于 JNI 调用。这可能仅使用“ native ”列,因为 JNI 当然是作为一系列 native 调用执行的。
  • Thread-local ticks:这被列为“杂项”其他条目,写在“不应从性能优化的角度引起关注”的地方。我不确定我们有多愿意相信它,但 XProf 确实不像您上面所说的那样是一个文档化的工具。

关于java - Java -Xprof 输出的解释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32083547/

相关文章:

java - 为什么此特定代码在 Android Studio 中生成 "ambiguous method call"错误?

java - 自定义 TextView 引发 RuntimeException "Error inflating"

c# - 无法检测 .NET 中的非托管内存分配

ios - 想知道如何知道仪器时间分析器中的符号,并且仅在 Xcode 中显示地址

c++ - 隐式的 new 和 delete 运算符杀死性能

sql - 我在哪里可以获得 Anjlab 的 SQL Profiler 的旧版免费版本?

c++ - 让 gprof 从 Qt 调试应用程序读取 gmon.out 输出的问题

java - 线程 “main” java.lang.NoClassDefFoundError中的异常:org/apache/hadoop/fs/StreamCapabilities。没有版本问题

java - 序列化 DataTable (WCF) 到 Android 项目

java - 服务器应用程序的 C++ 与 Java