java - 如何分析 native JNI 库

标签 java c jvm java-native-interface profiling

如何分析用 C 编写的 Java native 接口(interface)库?

我了解常用的 C 分析器,但我的问题是如何分析整个集,包括对可能会减慢程序速度的 JVM 方法的调用.

最佳答案

经过对此处提出的一些方法进行一些研究和测试后,我最终使用了 sprof

基本上我遵循了可用的说明in this answer 。一些评论:

  1. 我必须将 LD_PROFILE_OUTPUT 留空才能在 /var/tmp/ 中获取结果,否则不会生成输出文件。
  2. 我分配了LD_PROFILE=libXXXX.so

为了获取配置文件,我运行了加载并使用 native JNI 库的 Java 代码,并获得了一个包含分析结果的文件:

/var/tmp/libXXXX.so.profile

获得文件后,您可以使用以下命令读取它:

sprof/path/to/libXXXX.so/var/tmp/libXXXX.so.profile

分析结果遵循与 gprof 相同的模板。 Here您可以找到内容及其含义的描述。

关于java - 如何分析 native JNI 库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14752459/

相关文章:

java - 如何分析 Java 源代码并确保它是线程安全的

java - JVM 关闭 Hook 意外退出

java - 是否值得从 Oracle JVM 1.6.0_07 升级到更新的版本?

java - JVM Charset.defaultCharset() 未返回预期的字符集

javascript - 如何在客户端使用 React 的 BrowserRouter,在服务端使用 Java REST API (Spring Boot)?

java - 比较日期在java中不起作用

java - 如何在 Java 8 Stream Filter 中基于子文档过滤 Mongo 文档

c - 为什么我的 tolower 调用不执行?

c - 如何从 fgets 中获取正在读取的行的长度并对其进行循环

c - 数组和结构体