java中方法的最大大小?

java中方法的最大大小?,java,Java,我知道java中方法的最大大小是64k。如果超过,我们将收到编译器警告,如“代码太大而无法编译”。因此,我们可以称之为java的一个缺点,即内存量很小 我们可以增加这个尺寸限制吗?还是真的可以增加 关于这个方法还有什么想法吗 64k相当多,如果超过它,您可能会考虑重新组织代码 在我的项目中,我曾经在生成的源中遇到过这个约束。只需将一个方法拆分为几个方法即可解决问题。根据我的经验,64KB的限制只是生成代码的一个问题。特别是初始化大型阵列时(这是在代码中完成的) 在结构良好的代码中,每个方法都是可

我知道java中方法的最大大小是64k。如果超过,我们将收到编译器警告,如“代码太大而无法编译”。因此,我们可以称之为java的一个缺点,即内存量很小

我们可以增加这个尺寸限制吗?还是真的可以增加


关于这个方法还有什么想法吗

64k相当多,如果超过它,您可能会考虑重新组织代码


在我的项目中,我曾经在生成的源中遇到过这个约束。只需将一个方法拆分为几个方法即可解决问题。

根据我的经验,64KB的限制只是生成代码的一个问题。特别是初始化大型阵列时(这是在代码中完成的)

在结构良好的代码中,每个方法都是可管理的长度,并且比这个限制小得多。要加载到数组中的大块数据可以从非Java文件(如文本或二进制文件)中读取

编辑:

JIT不编译大于8K的方法是毫无意义的。这意味着代码运行较慢,并且可能会影响GC时间(因为使用未编译的方法搜索线程的调用堆栈效率较低,尤其是大型方法)


如果可能,您希望将方法限制为8K而不是64K。

如果您的方法超过50行(包括内部注释),请将其拆分。在这种情况下,您将永远不会达到任何限制(即使存在限制)


我个人看到了1000行长的方法(由自称程序员的罪犯编写),但没有看到这样的限制。

(a)你从哪里读到的?(b) 这有什么关系呢?这个限制应该设置为2k,以加强重构和良好的设计:)很像255个方法参数的限制应该设置为10。和(b)如果单个方法的代码大于64kb。。。也许是时候重构了?@Lukas Eder-正是我所想的,缺点是太多了:)@Max:预编译器将代码分成两种方法非常简单,最常见的两种情况是:(a)JSP,这是我被它绊倒的地方;和(b)生成的代码。在这两种情况下,要确保字节码始终低于64k可能需要做大量的工作。我的工作就是为每N行生成的代码生成方法。然后在一个新方法中调用它们。@Diederik很遗憾,编译器没有足够的智能来为您这样做,或者字节码支持更大的方法。请参阅我的编辑,建议您将方法限制在8K或更少。我见过有人用JSP多次达到这个限制。默认情况下,JSP通过一个巨大的doGet()方法编译成servlet,该方法包含JSP中的所有内容。在一个页面中需要很多东西,但还没有将JSP拆分为JSP片段的人似乎遇到了这个问题,因此这不仅仅是生成代码的问题。有两种情况让我感到有些困惑:一种是使用Java版本的YACC或LEX。它们可以生成用单个方法实现的非常大的状态机。当试图测量代码覆盖率时也会发生这种情况。coverage工具使用收集运行时数据所需的附加字节码来插入.class文件。插装字节码可以将方法推过64K限制,即使原始代码比64K限制小很多。