【发布时间】:2017-02-17 10:05:25
【问题描述】:
.class 文件是一个相当 well documented format 的文件,它定义了部分和大小,因此也定义了最大大小。
例如,.class 文件包含一个幻数(4 个字节)、一个版本(4 个字节)、常量池(可变大小)等。但大小可以在多个级别上定义:您可以有 65535方法,每个方法限制为 65535 个字节。
其他限制是什么?而且,如果您要尽可能制作最大的.class 文件,它会是多大?
如果需要,请将答案限制为 Java。这意味着如果 Scala 或 Clojure(或...)更改了一些限制,请忽略这些值。
【问题讨论】:
-
@sᴜʀᴇsʜᴀᴛᴛᴀ 否:第一个仅显示方法大小(我在问题中引用了它)。第二个是关于 Java 文件大小(它可以是无限的,因为空格被丢弃了)。这个问题是关于
.class文件的最大大小。 -
仅作记录:最大尺寸在实际中并不重要。如果你最终得到的类文件超过了这个限制,这意味着你的 Java 源代码必须是巨大的。如此巨大以至于它几个数量级太大而无法被认为是合理的。当然,这是一个有趣的理论问题,但是当您的日常工作受到答案的影响时,很可能是:您做的事情非常错误;-)
-
@GhostCat 是的,这是一个理论问题,而不是实际问题。实际上,我对文件系统可以处理多少个文件更感兴趣,因为我通常将我的代码剪切成短文件而不是大文件;)
-
限制不仅仅是理论上的。在处理生成的源代码或生成的字节码时,限制确实很重要。至于文件的数量,现代文件系统完全有能力处理巨大和/或大量的文件,因此无需担心。
标签: java jvm specifications .class-file