所以基本上我试图以下列形式运行测试:
@Benchmark
@Fork(jvmArgsAppend = "-Djava.lang.invoke.stringConcat=java.lang.invoke.StringConcatFactory.Strategy.BC_SB", value = 1)
public String java9StringBuilder(ThreadState state) {
// some implementation here
}
Run Code Online (Sandbox Code Playgroud)
运行它:
java -jar benchmarks.jar MyFullClassNameHere -v extra
Run Code Online (Sandbox Code Playgroud)
不幸的是,它失败了forked VM failed with exit code 1
并且没有更多的"详细"输出.
我做错了什么?
我确实得到了这些警告:
警告:未知模块:org.openjdk指定为--add-exports
警告:发生了非法反射访问操作
警告:org.openjdk.jmh.util.Utils(文件:/Path/Here/benchmarks.jar)对字段java.io.Console.cs进行非法反射访问
警告:请考虑向org.openjdk.jmh.util.Utils的维护者报告此情况
警告:使用--illegal-access = warn启用进一步非法反射访问操作的警告
警告:将来的版本中将拒绝所有非法访问操作
在这个例子中,Java 9没有任何问题.您正在为分叉的VM提供JVM选项,您是否尝试在没有JMH的情况下使用该选项运行?然后你会注意到命令不正确,正确的形式是:
- @Fork(jvmArgs = "-Djava.lang.invoke.stringConcat=java.lang.invoke.StringConcatFactory.Strategy.BC_SB")
+ @Fork(jvmArgs = "-Djava.lang.invoke.stringConcat=BC_SB")
Run Code Online (Sandbox Code Playgroud)
...因为BC_SB
枚举中的枚举常量java.lang.invoke.StringConcatFactory.Strategy
.
归档时间: |
|
查看次数: |
568 次 |
最近记录: |