Java 7 和 8 中方法的最大大小
我知道使用Java的方法不能大于64 KB。该限制导致我们从 JavaCC 语法生成的代码出现问题。我们在Java 6上遇到了问题,并且能够通过更改语法来解决此问题。是否更改了 Java 7 的限制,还是计划用于 Java 8?
只是为了说清楚。我自己不需要大于64 KB的方法。但是我写了一个语法,可以编译成一个非常大的方法。
我知道使用Java的方法不能大于64 KB。该限制导致我们从 JavaCC 语法生成的代码出现问题。我们在Java 6上遇到了问题,并且能够通过更改语法来解决此问题。是否更改了 Java 7 的限制,还是计划用于 Java 8?
只是为了说清楚。我自己不需要大于64 KB的方法。但是我写了一个语法,可以编译成一个非常大的方法。
问得好。与往常一样,我们应该去源代码找到答案(“Java®虚拟机规范”)。不过,本节没有明确提到限制(就像Java6 VM规范一样),但有些谨慎:
调用方法 (§2.6) 时创建的帧的局部变量数组中的最大局部变量数限制为 65535,这取决于 Code 属性 (§4.7.3) 中给出方法代码的 max_locals 项的大小,以及 Java 虚拟机指令集的 16 位局部变量索引。
干杯