JVM stack我无法弄清楚每个方法操作数堆栈和每个方法局部变量之间的区别是什么?如果JVM是32位机器,那么堆栈大小为65535个操作数呢?
现在大多数JVM都是64位机器,因为即使很多手机都是64位。
64K操作数是局部变量的数量(虽然long
和double
取两个)这只计算基元和引用。对象不在字节码级别的堆栈中(尽管它们可以在运行时进行转义分析)
注意:每个方法限制为64K,因此具有超过64K的局部变量不太可能有用。
JVM区分存储在变量中的值和表达式的中间结果:例如在(a + b) + c
中,a,b和c是局部变量,但a + b
的中间结果存储在堆栈中。
堆栈的最大大小与机器字中的位数无关。