Java类中允许的最大代码行数?

时间:2008-09-20 10:39:33

标签: java

.java文件包含多少行代码?它取决于所使用的JVM吗?

5 个答案:

答案 0 :(得分:33)

要扩展Jonas's response,Java虚拟机规范,Section 4.8 Constraints on Java Virtual Machine Code说:

  

一个Java的虚拟机代码   方法,实例初始化方法   (§3.9),或类或接口   存储初始化方法(第3.9节)   在代码的代码数组中   method_info结构的属性   一个类文件。这个部分   描述了相关的约束   与内容   Code_attribute结构。

继续4.8.1节,静态约束

  

类文件的静态约束   是那些定义良好形成的人   的文件。除了   Java虚拟上的静态约束   这些类文件的机器代码   已经给出了限制   上一节。静电   对Java虚拟的约束   类文件中的机器代码指定   Java虚拟机如何指令   必须在代码数组中布局   什么是个人的操作   说明必须是。

     

静态约束   代码数组中的指令如下   如下:

     

...

     
      
  • code_length项的值必须小于65536。
  •   
     

...

因此,每个方法的方法确实限制了65535字节的字节码。 (见下面的注释)

有关JVM的更多限制,请参阅Section 4.10 Limitations of the Java Virtual Machine

注意:尽管JVM的设计显然存在问题,但如果字节65535处的指令是1字节长的指令,则它不受异常处理程序的保护 - 这在Section的脚注4中列出4.10。

答案 1 :(得分:8)

我相信每种方法的字节码大小限制为64kb。

答案 2 :(得分:5)

“代码行”没有限制,但总大小有限制。每种方法都有64kb的限制。

我只使用代码生成工具遇到过这种情况。

如果接近极限,请小心。许多分析和监视工具使用字节代码插入。如果距离太近,他们会把你推到顶端。更糟糕的是,他们经常在编译后改变你的类文件。所有内容都在您的开发环境中编译和运行,但是当您在Test或QA中打开监视工具时它会崩溃。

答案 3 :(得分:4)

我记得曾经在Tomcat 4的复杂JSP页面中遇到过这个限制(过去当人们还在使用JSP时)。从JSP生成的java文件有一个太大而无法编译的方法,我想我必须拆分文件或做一些其他的噱头,无论如何这当然是一个好主意。

Sun的bug追踪器告诉我一些人still have the same problem

答案 4 :(得分:3)

如上所述,java中每个类的“代码行”没有限制,我们可以使用200行作为一个很好的指导,每个类不超过500行。