为什么Java将方法的大小限制为65535字节?

时间:2011-04-16 21:40:03

标签: java

我刚刚编译了以下代码

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指令。

1 个答案:

答案 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)。
  •   

在面向对象的编程语言中使用方法很少有很好的理由。