该限制在JVM规范中定义:
的方法的参数的数量 被限制为255 通过方法描述符(§4.3.3),其中该限制包括用于一个单位的定义 这 在实例或接口方法调用的情况下。
第4.3.3节提供了一些附加信息:
方法描述符仅在表示总长度小于或等于255的方法参数时才有效,其中该长度包括实例或接口方法调用时 对此 的贡献。
通过将各个参数的贡献相加来计算总长度, 其中long或double类型的参数对长度贡献两个单位,而其他类型的参数则贡献一个单位 。
您的发现很明显,双字原语(
long/
double)需要两倍于通常的4字节变量 和4字节对象实例引用的大小 。
关于与64位系统有关的问题的最后一部分,规范定义了 一个参数贡献 多少个 单元 , 即使在64位平台上,该部分规范 仍必须遵守
,该64位JVM可以容纳255个实例参数(例如255个)
Strings),而不考虑内部对象的指针大小。



