为什么 Java 将方法的大小限制为 65535 字节?

2023-12-30

我刚刚编译了以下代码

public class A {
    public static void main(String... args) {
        int i = 3;
        ++i; 
        ++i;
        ++i;
        ++i;
        ++i;
        ++i;
        ++i;
        ++i;
        // repeat writing the expression ++i for 20,000 times

        System.out.println(i);
    }
}

并收到以下错误消息

方法 main(String...) 的代码是 超过 65535 字节限制

为什么Java要实现这个限制呢?我不认为这是合理的,因为 Java 确实包含 goto_w 指令。


See the Java虚拟机规范 http://docs.oracle.com/javase/specs/jvms/se5.0/html/ClassFile.doc.html#88659第 4.10 节:

4.10 Java虚拟机的局限性

  • 每个非本机、非抽象方法的代码量限制为 65536 字节,具体取决于 Code 属性(第 4.7.3 节)和 LineNumberTable 属性(第 4.7.8 节)的 exception_table 中的索引大小,以及在 LocalVariableTable 属性中(第 4.7.9 节)。

在面向对象的编程语言中,没有什么充分的理由需要有这么长的方法。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么 Java 将方法的大小限制为 65535 字节? 的相关文章

随机推荐

  • 使用 C++ REST SDK 从文件读取 JSON (卡萨布兰卡)

    我有以下代码 它应该读取文本文件的内容并将其解析为 JSON try string t importFile argv iArgCounter extract filename ifstream t f importFile filestr
  • AD用户认证

    我正在尝试创建一个 ASP NET NET 3 5 网站以通过 Exchange Web 服务连接到我们的 Exchange 2010 服务器 当我定义要进行身份验证的用户名 密码和域时 我能够连接到 EWS 但我想 如果可能的话 不要在我
  • Google 电子表格中单元格文本的 sha3-256

    我知道你可以在谷歌表格上做 sha1 和其他 但是有没有办法做 sha3 256 secret test123 hash 3054762b0a8b31adfe79efb3bc7718624627cc99c7c8f39bfa591ce6854
  • 访问 iCloud 通知中已删除的对象

    我有一个应用程序设置非常类似于 iCloudCoreDataRecipes 示例 即 将 Core Data 与 iCloud 结合使用 在应用程序委托中 我观察到 NSPersistentStoreDidImportUbiquitousC
  • 图像配准(非刚性\非线性)

    我正在寻找一些算法 最好是如果源代码可用 用于图像配准 图像变形不能用单应矩阵来描述 因为我认为变形不是对称的 不是 均匀 更具体地说 变形就像桶形 扭曲和梯形扭曲 可能是图像的一些旋转 我想获得两个图像的像素对 这样我就可以获得 变形场
  • 在 C 编程中避免为串联分配大量内存

    提供的代码从文本文件中读取行并将它们存储在称为lines的动态分配的二维数组中 该模式始终在第32767行之后重复 然后它连接特定的行 lines j lines k lines m 并将结果打印在输出文件中 问题是我的 input txt
  • Backbone.js 和 PushState

    如果我在主干路由器中启用pushState 我是否需要在所有链路上使用return false 或者主干路由器是否会自动处理此问题 是否有任何示例 包括 html 部分和脚本部分 这是蒂姆 布兰延 Tim Branyen 在他的作品中使用的
  • 下划线的 PyCharm 代码完成设置 - 受保护和损坏的名称优先级较低?

    我正在使用 PyCharm 但我不喜欢显示的默认代码完成 protected and mangled名字高于public 我怎样才能强制显示以下划线在代码完成列表的底部 在顶部公开 像 PyDev 这样的一些编辑器在没有配置的情况下做得更好
  • Django 模板中的动态块

    这是一个关于 django 的问题 我完全找不到答案 假设我有一个网站 在侧边栏中显示两个块 最后登录的用户的列表 最近发表的博客文章的列表 假设这些块将显示在 80 的网站 URL 上并使用模板文件呈现 这些块的数据是由代码生成的 显然
  • jQuery $(窗口).resize();等效的事件侦听器,仅在指定的轴更改时触发?

    我正在寻找一个事件监听器 它的工作原理类似于 jQuery resize 但仅当调整大小的对象 谈论窗口 在 x 轴或两者上调整大小时触发 但不仅仅在 y 轴上调整大小 所以基本上它只会监听宽度的调整大小事件 您可以将窗口加载时浏览器的宽度
  • JqueryUI Autocomplete: autoFocus = true 不会做任何事情

    我有这个带有自动完成功能的输入 autocomplete source jsonR php minLength 2 select function event ui this val ui item value llamar include
  • 嵌入式系统的 Google 测试

    我想使用 Google Tests 为我的嵌入式应用程序软件编写单元测试 这些测试将在用 C 编写的应用软件上执行 应用程序软件使用的驱动程序 例如I2C SPI 故障断言是用 C 编写的 我的问题是 什么是一个好的起点 我的意思是我可以阅
  • linux 传递 gcc mcrypt.h 位置的正确标志

    我已经编译了libmcrypt从源头到 home mybin 确认以下内容为所需文件的位置 home mybin include mcrypt h home mybin include mutils mcrypt h home mybin
  • 如何创建 /etc/subuid 和 /etc/subgid

    我的 Manjaro 安装没有配置 etc subuid and etc subgidDocker 等无根容器工作所需的文件 例如cat etc subuid返回文件未找到错误 我一安装 Docker Desktop 就发现了这个问题 并且
  • 如何识别矩阵中每行哪些列不是“NA”?

    我有一个 12 行 77 列的矩阵 但为了简单地让我们使用 p lt matrix NA 5 7 p 1 2 lt 0 3 p 1 3 lt 0 5 p 2 4 lt 0 9 p 2 7 lt 0 4 p 4 5 lt 0 6 我想知道哪些
  • 在 Rstudio 中使用 keras 时,如何使绘图显示在 Rmarkdown 文件中而不是查看器窗格中?

    我是新来的R并尝试keras in Rstudio 一切accuracy loss通过运行 fit 的交互式图出现在Viewer窗格而不是Rmarkdown file 所有其他图通常都绘制在内部Rmarkdown文件 但不适用于 keras
  • Android Studio 构建正常,Gradle 命令行失败

    我已将一个应用程序从 Eclipse 移植到 Android Studio 实现了我需要的风格并允许它在 Android Studio 中工作 由于风格的数量 我更喜欢使用命令行 Gradle 来构建它 但是 当我运行以下命令来构建我的发布
  • IN 与具有大型行集的 JOIN

    我想选择一个表中的行 其中主键位于另一个表中 我不确定是否应该在 SQL Server 2005 中使用 JOIN 或 IN 运算符 对于大型数据集 即数百万行 这两个 SQL 查询之间是否存在显着的性能差异 SELECT FROM a W
  • Java:纪元日期为 MM/DD/YYYY

    我的时间 1386696238 我的代码 Date date new Date Long parseLong currentNotification getDate created SimpleDateFormat formatter ne
  • 为什么 Java 将方法的大小限制为 65535 字节?

    我刚刚编译了以下代码 public class A public static void main String args int i 3 i i i i i i i i repeat writing the expression i fo