繁体   English   中英

方法字节码限制的目的是什么?

[英]What's the purpose of the method bytecode limit?

关注这个问题 :Java方法有64kb字节码限制。

这为编译器带来了什么好处? GCC很乐意编译多兆字节的C方法 - 这个设计决策背后的原因是什么? 正如这个问题所建议的那样,只是限制糟糕的编程实践,因为64kb方法是巨大的吗? 或者是否有一些特定的好处,限制是64kb而不是其他一些数字?

方法字节码中的偏移量为2个字节长(在类文件格式规范中称为“u2”)。 可用u2表示的最大偏移量为64kB。

偏移量出现在实际指令中,例如if*字节码,后跟两个包含分支偏移量增量的字节。 此外,其他类文件属性(如StackMapTableLocalVariableTableExceptions等)包含字节码的偏移量。

如果偏移是u4,那么方法可能会更长,但所有类文件也会更大。 这是一种权衡。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM