JIT C2方法最大大小

时间:2019-07-12 10:55:09

标签: java jvm jit

我想知道是否有JIT C2可以编译的最大方法。 假设有一个方法可以将一个类映射到另一个类,但是该类包含许多字段。它变得很热,C1对其进行了优化,但在某个时候C2会启动。如果字节码足够长,C2会忽略该方法而不编译吗? 我找不到我的问题的答案。也许没有这种东西?

1 个答案:

答案 0 :(得分:1)

JIT编译器有很多限制。

其中之一是HugeMethodLimit等于8000,并且在产品JVM构建中不可调整。 C2或C1都不会编译8000个以上字节码的方法。可以使用-XX:-DontCompileHugeMethods来关闭此限制。

如果IR节点(而非字节码)的总数达到80000,C2也可以停止较小方法的编译。可以使用-XX:MaxNodeLimit(C2特定选项)来调整此限制。

还有许多其他阈值(请参阅12)会影响内联和某些JIT优化。