在Java中,局部变量的最大内存空间是否为32位?如果是,那么当我在我的Java代码中使用数据类型为long(64位)的局部变量时会发生什么?这个变量会以何种方式分配内存?每当我搜索答案时,我都只能得到与Java内存区域有关的解释,它们解释了局部变量在堆栈中所处的方法框架中的位置(我知道这点没问题),但这显然不是对我的问题的相关回答。
JVM通常会在堆栈上对本地变量进行字节对齐,这意味着它们在32位JVM上占用32位(除了long
和double
,它们将占用64位),并且它们将在64位JVM上占用64位。 JVM允许对变量进行压缩,以占用更少的空间(例如,将4个byte
放入32位单词中,而不是将4个byte
放入4个单独的单词中),但这比使所有变量对齐更慢,因为处理器在使用它们之前必须对它们进行解包。
long
是一个64位有符号数字,在其作用域内存储时与平台无关即可。 - zapl