分析由 JNI 调用运行的 Java

Posted

技术标签:

【中文标题】分析由 JNI 调用运行的 Java【英文标题】:Profiling Java running by JNI calls 【发布时间】:2010-05-20 13:57:29 【问题描述】:

我有一个 C++ 代码,在执行时:

加载 JVM(我可以完全控制如何加载 JVM),并使用 C JNI 代码调用 Java 方法(从加载的类)。 Java 代码没有 Main(),它实际上不是标准的 Java 应用程序。主要是编译压缩成Jar文件的静态代码,被C++模块调用。

是否可以分析 YourKit 正在执行的这个 Java 代码(有它的许可证)?如果是这样,我会很高兴知道怎么做。

【问题讨论】:

我已经设法使用 YourKit 进行分析。我刚刚添加了yourkit.com/docs/80/help/agent.jsp agnent VM 标志并将分析器附加到 VM。 请考虑回答您自己的问题 :) 正如反垃圾邮件所暗示的那样 - 你为什么不把你的发现作为答案呢? 【参考方案1】:

我会为那些希望分析 Java 的 C++ 人员提供这个:Java 有一个很棒的可视化分析器,它可以自动连接到称为 VisualVM 的 JVM。它包含在 jdk 中。 在这里查看:http://visualvm.java.net/

要运行 visual vm,请在 jdk bin 文件夹中查找可执行文件。

【讨论】:

【参考方案2】:

回答群众诉求,

我已设法使用 YourKit 进行配置文件。我刚刚添加了 yourkit.com/docs/80/help/agent.jsp agnent VM 标志并将分析器附加到 VM。

【讨论】:

以上是关于分析由 JNI 调用运行的 Java的主要内容,如果未能解决你的问题,请参考以下文章

[RK3568][Android11]JNI调用流程分析

通过 JNI 调用简单的 java 静态方法不起作用,尽管 c++ 编译并运行它

C++调用JVM.dll运行Java程序,JNI实战简例,精简JRE实战

Java程序通过JNI调用C++程序的方法

胡思乱想JNI与线程池的维护

jni调用崩溃的情况下如何在linux上查找失败的原因?