Runner.newBenchmarkParams() currently always ManagementFactory.getRuntimeMXBean().getInputArguments() in all modes. It requires ManagementPermission "monitor" in all cases.
Consider
java -jar micros-jdk8/target/micros-jdk8-1.0-SNAPSHOT.jar -f 1 -bm ss FileRead [OK]
java -Djava.security.manager -Djava.security.policy=jmh-security-minimal-runner.policy -jar micros-jdk8/target/micros-jdk8-1.0-SNAPSHOT.jar -f 0 -bm ss FileRead [OK]
Now if we remove the permission (jmh-security-minimal-runner-noman.policy)
java -Djava.security.manager -Djava.security.policy=jmh-security-minimal-runner-noman.policy -jar micros-jdk8/target/micros-jdk8-1.0-SNAPSHOT.jar -f 1 -bm ss FileRead
Exception in thread "main" java.security.AccessControlException: access denied ("java.lang.management.ManagementPermission" "monitor")
...
But in case we pass JVM or benchmark parameters to forked VM (e.g. -jvmArgs ""), getRuntimeMXBean information is not required.
Consider
java -jar micros-jdk8/target/micros-jdk8-1.0-SNAPSHOT.jar -f 1 -bm ss FileRead [OK]
java -Djava.security.manager -Djava.security.policy=jmh-security-minimal-runner.policy -jar micros-jdk8/target/micros-jdk8-1.0-SNAPSHOT.jar -f 0 -bm ss FileRead [OK]
Now if we remove the permission (jmh-security-minimal-runner-noman.policy)
java -Djava.security.manager -Djava.security.policy=jmh-security-minimal-runner-noman.policy -jar micros-jdk8/target/micros-jdk8-1.0-SNAPSHOT.jar -f 1 -bm ss FileRead
Exception in thread "main" java.security.AccessControlException: access denied ("java.lang.management.ManagementPermission" "monitor")
...
But in case we pass JVM or benchmark parameters to forked VM (e.g. -jvmArgs ""), getRuntimeMXBean information is not required.