如何分析本机JNI库

mci*_*eec 1 c java java-native-interface profiling jvm

如何剖析用C编写的Java本机接口库?

我了解通常的C探查器,但是我的问题是我如何探查整个集合,包括对JVM方法的调用,这可能会使程序变慢。

mci*_*eec 5

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

基本上,我按照此答案中的说明进行操作。一些评论:

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

为了获取配置文件,我运行了Java代码,该代码加载并使用了本机JNI库,并且我得到了一个带有分析结果的文件:

/var/tmp/libXXXX.so.profile

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

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

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