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