Java方法的最大大小

Java方法的最大大小,java,methods,size,max,Java,Methods,Size,Max,我有一个java文件,它有一个非常大的方法,它成功地编译了,但运行后抛出java.lang.ClassFormatError:类文件中的无效方法代码长度72521 我对vm规范文件的研究将方法的最大大小限制为65536字节。JVM规范已经提到了这个限制 有什么解决办法吗?当然,把你的方法分成几个小的 不,除非编译您自己的JVM版本,使用更大的整数存储当前限制它的索引/属性。然后我怀疑您需要定制版本的JDK来编译它。在所有这些之后,您的程序将只在被攻击的JVM上运行 没有任何理由需要这么大的单个方

我有一个java文件,它有一个非常大的方法,它成功地编译了,但运行后抛出java.lang.ClassFormatError:类文件中的无效方法代码长度72521

我对vm规范文件的研究将方法的最大大小限制为65536字节。JVM规范已经提到了这个限制


有什么解决办法吗?

当然,把你的方法分成几个小的

不,除非编译您自己的JVM版本,使用更大的整数存储当前限制它的索引/属性。然后我怀疑您需要定制版本的JDK来编译它。在所有这些之后,您的程序将只在被攻击的JVM上运行


没有任何理由需要这么大的单个方法。

您可能应该将方法拆分为两个或多个子方法,然后从主方法依次调用。事实上,它可能不止两个。将代码封装到多个方法中会比一个狄更斯长度方法更容易理解。嘿,你也许可以在其他地方重复使用它们

如果你绝对不能打破你的方法,也许你可以尝试去掉多余的空格?这就是所谓的,可能有一个实用程序可以为Java实现这一点。所有这些都是警告,这将使您的epic方法更不可读,所以如果您想在将来更改它,请不要这样做


另一方面,祝贺您在打破java的同时编写了一个方法。这确实令人印象深刻。

我在尝试使用profiling-Xrunhprof时,在服务器软件上体验到了这一点。在64位win7上最新的jre7版本中,-Xrunhprof做了一些魔术,使得该方法太大。

实际上,一个方法的最大大小是65535字节。在这种情况下,代码自动再生在这种情况下需要做什么,现在我想了更多,缩小不太可能有任何作用,因为源文件正在编译成字节码,其方式可能与您使用的空白类型无关。所以,别介意这个建议。@anish:你是说太大的代码是由另一个应用程序自动生成的吗?如果这是真的,那么问题可能更大。如果是您编写的应用程序,那么您需要更仔细地考虑如何自动封装生成的代码。如果您不是应用程序的作者,您可能需要亲自检查代码并手动封装,这将非常耗时。另外,向制作应用程序的人提交一份bug报告。