每方法操作数堆栈V / S每方法局部变量

时间:2018-09-02 08:36:11

标签: java jvm stack

JVM stack 我无法弄清楚Per-method操作数堆栈和Per-method局部变量之间的区别是什么? 如果JVM是32位计算机,那么堆栈大小是65535个操作数?

2 个答案:

答案 0 :(得分:2)

JVM区分存储在变量中的值和表达式的中间结果:在(a + b) + c中,a,b和c是局部变量,但是a + b的中间结果存储在堆栈中。

堆栈的最大大小与机器字的位数无关。

答案 1 :(得分:1)

如今,大多数JVM是64位计算机,甚至许多手机都是64位。

64K操作数是局部变量的数量(尽管longdouble取两个),这仅计算基元和引用。对象不在字节码级别的堆栈上(尽管它们可以在运行时进行转义分析)

注意:每种方法都限制为64K,因此具有超过64K的局部变量不太可能有用。