5

我正在尝试编写一些基准来衡量内联方法的效果。有人知道是否可以在 HostSpot JVM 上禁用特定类或方法的内联?

我发现-XX:-Inline总共禁用了内联。

4

1 回答 1

8

您可以使用-XX:CompileCommandJVM 选项来控制即时编译。该选项可用于排除某些要编译的方法(或类的所有方法)等。从文档中:

指定要对方法执行的命令。例如,indexOf()要从编译中排除 String 类的方法,请使用以下命令:

-XX:CompileCommand=exclude,java/lang/String.indexOf

如果您只想防止方法内联,您可以使用dontinline具有相同语法的命令,例如

-XX:CompileCommand=dontinline,java/lang/String.indexOf

流行的 Java 微基准测试工具JMH在内部使用相同的 JVM 选项。

于 2017-12-29T22:56:52.467 回答