Java 基本类型大小
java 一共定义了 8 中基本类型 byte,short,int,double,float,boolean,char,long。8 种基本类型在内存空间上的利用和执行效率上有着显著的优势。
栈
这里的栈指定是解释器栈帧。Java 虚拟机每调用一个 Java 方法,便会创建一个栈帧。解释栈帧是解释器使用的。一共有两个主要组成部分
- 局部变量区
- this 指针
- 局部变量
- 方法接受的参数
- 字节码操作数栈
在局部变量区,除了 long、double 值需要用两个数组单元来存储之外,其他基本类型以及引用类型的值均占用一个数组单元。。
也就是 boolean、byte、char、short、在栈上和 int 占用是一样的。32位 HotSpot 4 字节,64 位 HotSpot 8 字节。
操作数栈
Java 虚拟机的算数运算几乎全部依赖于操作数栈。所以我们需要将堆中的 boolean、byte、char 以及 short 加载到操作数栈上,而后将栈上的值当成 int 类型来运算。
堆
上面限于栈,存储于堆中的字段或数组元素上的基本类型。例如 byte、char 字段或者数组单元,在堆上占用的空间分别为一字节、两字节,也就是说,跟这些类型的大小值域相同。