Java 如何生成jmh基准的动态调用图?

Java 如何生成jmh基准的动态调用图?,java,call-graph,jmh,Java,Call Graph,Jmh,我想从使用框架jmh编写的基准测试生成callgraph。我正在用它。 我已经尝试过为jar文件target/benchmarks.jar生成一个静态调用图,它可以正常工作。现在我想生成动态调用图,所以我使用了以下命令: java -jar target/benchmarks.jar -jvmArgs "-javaagent:target/javacg-0.1-SNAPSHOT-dycg-agent.jar" 但是没有创建输出文件callgraph.txt。您是否尝试过先为常规Java应用程序

我想从使用框架
jmh
编写的基准测试生成
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?静态调用图工作的事实并不意味着动态调用图应该工作

如果您尝试使用dynamic,那么您将意识到即使没有JMH参与,它也无法“工作”。诀窍是“包括”要使用的类:

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在基准测试期间多次分叉JVM,以消除任何副作用。我不认为为生成的代码生成调用图是一个好主意,但如果需要,可以禁用分叉