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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了每方法操作数堆栈V / S每方法局部变量相关的知识,希望对你有一定的参考价值。

JVM stack我无法弄清楚每个方法操作数堆栈和每个方法局部变量之间的区别是什么?如果JVM是32位机器,那么堆栈大小为65535个操作数呢?

答案

现在大多数JVM都是64位机器,因为即使很多手机都是64位。

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

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

另一答案

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

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

以上是关于每方法操作数堆栈V / S每方法局部变量的主要内容,如果未能解决你的问题,请参考以下文章

JVM - 内存管理

运行时栈帧结构

Java虚拟机栈

栈帧java中用啥表示

在装饰方法中赋值之前引用的局部变量

JVM之一:操作数栈和局部变量表