上一节讲到了jvm中代码执行的过程,class文件被加载到方法区,需要执行的时候,会生成java方法栈的栈帧。然后提供给解释执行器进行命令翻译。
java语言中有几个基本类型,boole/byte/short/char/int/long/float/double。jvm提供基本类型的初衷是为了提高计算速度和节省内存空间,java语言中有基本类型和引用类型两大类
基础类型在堆中存储的长度分别为:
- boolean 1字节
- byte 1字节
- short 2字节
- char 2字节
- int 4字节
- long
- float
- double
但是在解释执行器上略微有些不同:boolean,byte,short,char类型都会扩展成4个字节,保持跟int一样的长度,被当作int对待。
所以当堆内的基本类型读取到解释执行器栈的时候,会做“零扩展”,在栈上保存到内存的时候,会做数据截取。