我刚刚编译了以下代码
public class A {
public static void main(String... args) {
int i = 3;
++i;
++i;
++i;
++i;
++i;
++i;
++i;
++i;
// repeat writing the expression ++i for 20,000 times
System.out.println(i);
}
}
并收到以下错误消息
方法main(String ...)的代码是 超过65535字节限制
为什么Java实现此限制?我没有看到理性,因为Java确实包含了goto_w指令。
答案 0 :(得分:27)
请参阅Java Virtual Machine Specification部分4.10:
4.10 Java虚拟机的限制
- 每个非本机非抽象方法的代码量由LineNumberTable属性(第4.7.8节)中Code属性(第4.7.3节)的exception_table中索引的大小限制为65536字节),以及LocalVariableTable属性(§4.7.9)。
在面向对象的编程语言中使用方法很少有很好的理由。