因此,基本上,我试图以以下形式运行一个测试:
@Benchmark
@Fork(jvmArgsAppend = "-Djava.lang.invoke.stringConcat=java.lang.invoke.StringConcatFactory.Strategy.BC_SB", value = 1)
public String java9StringBuilder(ThreadState state) {
// some implementation here
}运行它时:
java -jar benchmarks.jar MyFullClassNameHere -v extra不幸的是,它在forked VM failed with exit code 1中失败了,不再有“冗长”的输出。
我做错什么了?
我确实收到了这样的警告:
警告:未知模块: org.openjdk指定为--添加-导出 警告:发生了非法反射访问操作。 警告: org.openjdk.jmh.util.Utils非法对java.io.Console.cs字段的反射访问(文件:/Path/Here/benchmarks.jar s.jar) 警告:请考虑向org.openjdk.jmh.util.Utils的维护人员报告 警告:使用 警告:所有非法访问操作都将在以后的版本中被拒绝。
发布于 2017-11-27 21:01:40
本例中的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")...because BC_SB是java.lang.invoke.StringConcatFactory.Strategy枚举中的枚举常数。
https://stackoverflow.com/questions/47512991
复制相似问题