如何生成 jmh 基准的动态调用图?
How to generate dynamic callgraph of a jmh benchmark ?
我想从使用框架 jmh
编写的基准生成 callgraph
。为此,我正在使用 https://github.com/gousiosg/java-callgraph。
我已经尝试为 jar 文件 target/benchmarks.jar
生成一个静态调用图并且它有效。现在我想生成动态调用图,所以我使用了以下命令:
java -jar target/benchmarks.jar -jvmArgs "-javaagent:target/javacg-0.1-SNAPSHOT-dycg-agent.jar"
但是没有创建输出文件 callgraph.txt
。
您是否尝试过先为常规 Java 应用程序创建动态调用图?或者,至少,尝试使用 javaagent 调用主机 JVM?静态调用图有效的事实并不意味着动态应该。
如果您尝试动态,那么您会发现即使不涉及 JMH,它也不会 "work"。诀窍是 "include" 类 仪器:
java -jar ~/projects/jmh/jmh-samples/target/benchmarks.jar \
-jvmArgs "-javaagent:target/javacg-0.1-SNAPSHOT-dycg-agent.jar=\"incl=org.*\"" \
Hello -f 1 -wi 5 -i 5
我想从使用框架 jmh
编写的基准生成 callgraph
。为此,我正在使用 https://github.com/gousiosg/java-callgraph。
我已经尝试为 jar 文件 target/benchmarks.jar
生成一个静态调用图并且它有效。现在我想生成动态调用图,所以我使用了以下命令:
java -jar target/benchmarks.jar -jvmArgs "-javaagent:target/javacg-0.1-SNAPSHOT-dycg-agent.jar"
但是没有创建输出文件 callgraph.txt
。
您是否尝试过先为常规 Java 应用程序创建动态调用图?或者,至少,尝试使用 javaagent 调用主机 JVM?静态调用图有效的事实并不意味着动态应该。
如果您尝试动态,那么您会发现即使不涉及 JMH,它也不会 "work"。诀窍是 "include" 类 仪器:
java -jar ~/projects/jmh/jmh-samples/target/benchmarks.jar \
-jvmArgs "-javaagent:target/javacg-0.1-SNAPSHOT-dycg-agent.jar=\"incl=org.*\"" \
Hello -f 1 -wi 5 -i 5