1.栈:Java程序的运行区,是在线程创建时创建。生命周期与线程生命周期一致。
栈是由栈帧的格式存在,栈帧是一个内存区块,是一个有关方法的和运行时数据的数据集。
栈帧主要保存一下几种变量:
1)本地变量:包括输入参数和输出参数以及方法内的变量
2)栈操作:记录出栈和入栈操作
3)栈帧数据:包括类文件,方法
2 堆:堆内存用来存放关键字 new 创建的对象和数组。在堆中分配的内存,由Java虚拟机自动回收器来管理
3 常量池:指的是在编译器能够被确定,并保存在已编译的.class文件中的一些数据。包含以下:
- int long double 等各种基本类型
- 对象型(String 数组)的常量值--------即添加了final关键字的
- 类和接口的全限定名
- 字段名称和描述符
- 方法和名称和描述符