Java .class文件的最大大小是多少?
甲.class
文件是一个相当有据可查的格式定义部分和大小,因此,最大尺寸为好。
例如,一个.class
文件包含一个幻数(4个字节),一个版本(4个字节),常量池(可变大小)等。但是大小可以在几个级别上定义:您可以有65535个方法,每个方法都限于65535字节。
如果需要,将答案限制为Java。这意味着如果Scala或Clojure(或…)更改了一些限制,请忽略这些值。
回答:
JVM规范对类文件没有限制,并且由于类文件是可扩展的容器,支持任意的自定义属性,因此您甚至可以根据需要将其最大化。
每个属性具有大小字段的的u4
类型,因此,可以指定一个数字向上的至2³²-1
(4GiB
)。实际上,由于JRE
API(ClassLoader
方法,Instrumentation
API和Unsafe
)全部一致地使用byte[]
或ByteBuffer
描述类文件,因此不可能创建具有多于2³¹-1
字节(2GiB
)的类文件的运行时类。
换句话说,即使是单个自定义属性,其大小也可能超过实际可加载类的大小。但是,一个类可以具有65535个属性,外加65535个字段,每个字段都具有自己的65535个属性,以及65535个方法,每个方法也最多具有65535个属性。
如果您进行数学计算,您将得出结论,仍然格式正确的类文件的理论最大值可能会超出任何实际存储空间(超过2个字节)。
以上是 Java .class文件的最大大小是多少? 的全部内容, 来源链接: utcz.com/qa/414756.html