【问题标题】:Running cachegrind on OpenJDK JVM在 OpenJDK JVM 上运行 cachegrind
【发布时间】:2015-05-29 22:23:54
【问题描述】:

我想使用 cachegrind 在 OpenJDK JVM 上进行一些性能分析。 (顺便说一句,如果这不是一个好主意,我想了解原因。)

问题是它不断地在 JVM 中触发断言。那么我该怎么做才能使用 cachegrind 来运行呢?否则,请告诉我为什么这行不通。如果您可以建议替代缓存研磨。 (请注意,我已经查看并使用了 perf。只是我很好奇 cachegrind/callgrind 这样的工具在结果方面会有多么不同。)

【问题讨论】:

    标签: jvm cachegrind


    【解决方案1】:

    Valgrind 和基于它的工具通常不适合性能分析。 Valgrind 是一种虚拟机,它不直接执行原始代码,而是对其进行翻译。程序在 Valgrind 下运行速度通常要慢得多,这会影响应用程序的执行场景。

    Valgrind 也不能很好地处理动态和自修改代码。对于 JVM 的 JIT 编译,这可能会导致您明显观察到的随机断言失败和 JVM 崩溃。众所周知,当 Java 在禁用 JIT 的情况下运行时,Valgrind 会更加稳定,即-Xint。但在-Xint 模式下,分析没有多大意义,因为它不能反映真实的应用程序性能。

    perf 是进行此类测量的首选方式。 perf 依赖于硬件计数器,它不会修改执行的代码。对于更深入的性能分析,有英特尔 VTune 放大器。虽然它不是免费的,但有试用版。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-30
      • 2013-11-20
      • 1970-01-01
      相关资源
      最近更新 更多