How many lines of code can a .java file contain? Does it depend on the JVM being used?
解决方案
The Java virtual machine code for a
method, instance initialization method
(§3.9), or class or interface
initialization method (§3.9) is stored
in the code array of the Code
attribute of a method_info structure
of a class file. This section
describes the constraints associated
with the contents of the
Code_attribute structure.
Continuing to Section 4.8.1, Static Constraints
The static constraints on a class file
are those defining the well-formedness
of the file. With the exception of the
static constraints on the Java virtual
machine code of the class file, these
constraints have been given in the
previous section. The static
constraints on the Java virtual
machine code in a class file specify
how Java virtual machine instructions
must be laid out in the code array and
what the operands of individual
instructions must be.
The static constraints on the
instructions in the code array are as
follows:
...
The value of the code_length item must be less than 65536.
...
So a method does have a limit of 65535 bytes of bytecode per method. (see note below)
Note: Although there is apparently a problem with the design of the JVM, where if the instruction at byte 65535 is an instruction that is 1 byte long, it is not protected by exception handler - this is listed in footnote 4 of Section 4.10.