当前位置: 首页 > 面试题库 >

Java .class文件的最大大小是多少?

郑高驰
2023-03-14
问题内容

.class文件是一个相当有据可查的格式定义部分和大小,因此,最大尺寸为好。

例如,一个.class文件包含一个幻数(4个字节),一个版本(4个字节),常量池(可变大小)等。但是大小可以在几个级别上定义:您可以有65535个方法,每个方法都限于65535字节。

其他限制是什么? 而且,如果您要制作最大的.class文件,它将是多少?

如果需要,将答案限制为Java。这意味着如果Scala或Clojure(或…)更改了一些限制,请忽略这些值。


问题答案:

JVM规范对类文件没有限制,并且由于类文件是可扩展的容器,支持任意的自定义属性,因此您甚至可以根据需要将其最大化。

每个属性具有大小字段的的u4类型,因此,可以指定一个数字向上的至2³²-14GiB)。实际上,由于html" target="_blank">JRE
API(ClassLoader方法,Instrumentation
API和Unsafe)全部一致地使用byte[]ByteBuffer描述类文件,因此不可能创建具有多于2³¹-1字节(2GiB)的类文件的运行时类。

换句话说,即使是单个自定义属性,其大小也可能超过实际可加载类的大小。但是,一个类可以具有65535个属性,外加65535个字段,每个字段都具有自己的65535个属性,以及65535个方法,每个方法也最多具有65535个属性。

如果您进行数学计算,您将得出结论,仍然格式正确的类文件的理论最大值可能会超出任何实际存储空间(超过2个字节)。



 类似资料:
  • A文件是一种有很好文档记录的格式,它定义了节和大小,因此也定义了最大大小。 例如,a文件包含一个幻数(4字节)、一个版本(4字节)、常量池(可变大小)等。但大小可以在多个级别上定义:可以有65535个方法,每个方法限制为65535字节。 其他限制是什么?如果你想做最大的文件可能是什么大小? 如果需要,限制对Java的回答。意思是如果Scala或Clojure(或…)改变一些限制,忽略这些值。

  • 问题内容: 我阅读了有关Lucene限制2Gb文档的说明。在Elasticsearch中可以建立索引的文档大小是否还有其他限制? 问题答案: Lucene内部使用一个字节缓冲区,该缓冲区使用32位整数进行寻址。根据定义,这限制了文档的大小。因此,理论上最大2GB。 在ElasticSearch中: ES GitHub代码中有一个,并将其设置为或。因此,基本上, 2GB是通过HTTP进行批量索引的最

  • 本文向大家介绍MongoDB中文档的最大大小是多少,包括了MongoDB中文档的最大大小是多少的使用技巧和注意事项,需要的朋友参考一下 该文档是集合中的记录。每个文档的大小限制为16 MB。文档包裹在大括号({})中。 让我们创建一个包含文档的集合- 在find()方法的帮助下显示集合中的所有文档- 这将产生以下输出-

  • 问题内容: 由于(当前)仅支持将字符串作为值,并且为了做到这一点,需要先将对象进行字符串化(存储为JSON- string),然后才可以定义值的长度。 有谁知道是否存在适用于所有浏览器的定义? 问题答案: 储存空间 暗示,使用DOM存储,您具有比对Cookie施加的典型用户代理限制更大的存储空间。但是,提供的数量未在规范中定义,用户代理也没有有意义地广播。 如果您查看Mozilla源代码,我们可以

  • 问题内容: 由于(当前)仅支持将字符串作为值,并且为了做到这一点,需要先将对象进行字符串化(存储为JSON- string),然后才可以定义值的长度。 有谁知道是否存在适用于所有浏览器的定义? 问题答案: 引用有关Web存储的Wikipedia文章: 可以简单地将网络存储视为Cookie的一种改进,它提供了更大的存储容量(Google Chrome中每个原始站点10 MB,Mozilla Fire

  • 我正在使用PyCharm社区版2016,我注意到我无法打开大型数据输入文件或日志(20MB)。编辑简单地说“文件XXX太大(大小)”。 不仅如此,似乎没有办法改变限制。官方文档提到了一种增加使用intellisense的最大大小的方法,但根本没有增加可以打开的文件的最大大小。这是真的吗?这真的是一个完全无法打开大型日志的IDE吗?