java - 在 Mac 上分析 Java 中的 CPU 使用情况

标签 java profiling java-native-interface cpu-usage

我正在寻找一种方法来测量我的java代码中不同方法的CPU使用率。我知道这可以使用 JNI 和 C 来实现,但我不知道从哪里开始......

这样做的目的是比较不同的算法,并提供定性结果。

最佳答案

最常见的方法可能是使用采样。 JVM 提供了一些工具来询问所有线程(或您感兴趣的线程)的当前堆栈跟踪,以及它们消耗了多少 CPU。所以你定期这样做。在每次调用时,如果线程位于您感兴趣的方法内,则假设自该方法内上次轮询以来它已花费了报告的 CPU 时间的一半。

如果这个方法听起来合适的话,不久前我在 Java 5 profiling facilities 上写了一些 Material 。这可能对你有帮助。

Java 5 还提供了一个 Instrumentation 框架,通过该框架,您可以在加载类时对其进行修改,以包括对给定方法的入口和导出的调用,以便您可以测量该方法内部的 CPU 使用情况。但是,这编程起来有点复杂,因为您需要在加载实际的类二进制文件时对其进行修改。

关于java - 在 Mac 上分析 Java 中的 CPU 使用情况,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1524908/

相关文章:

Java ProcessBuilder 无法在 Java 中运行 Python 脚本

java - 在另一个项目中使用您自己的Java库?

c# - 使用VS2010 Profiler进行内存测量

android - 在 Eclipse 中调试 Android NDK C/C++ 代码 - 断点未命中

java - 在对象数组中查找对象变量的特定值的最快方法

Netbeans 中的 Java 数据库连接

c - shell加密程序如何使用更少的用户时间?

go - 如何使用 `go test` 对 golang 中程序的 *section* 进行计时和分析?

java - JNI 中的 GlobalReferences 是否会阻止 GC 清理对象?

java - 如何通过 JNI 调用 Java 方法,让 JVM 垃圾收集参数?