JVM(虚拟)内存中的堆和栈
JVM(虚拟)内存中的堆和栈
堆和栈的区别:
1、程序的内存分配:
(1)栈/堆栈(Stack):编译器自动释放,存储基本类型和对象引用、函数参数值、局部变量
(2)堆(Heap):程序员管理
(3)全局区(Static):全局和静态变量
2、堆栈详解
(1)栈/堆栈实际是一个先进后出的队列,存储基本类型和对象引用、函数参数值、局部变量。
函数进行时分配内存,函数执行完释放,先释放局部变量,从右往左释放参数
堆栈的基本操作:
push() − 推送(存储)在栈上的元素。
pop() − 弹出(访问)堆栈上的元素
peek() − 得到的堆栈顶部的数据元素,但不删除它。
isFull() − 检查堆栈是否满了。
isEmpty() − 检查堆栈是否为空的。
堆是存储java对象,运行时动态创建,全局