java 堆和栈
JVM内存的划分有五块
- 寄存器
- 本地方法去
- 方法区
- 栈内存
- 堆内存
一、栈
基本数据变量和局部变量都是存放在栈中的,以及main方法等方法也是存放在栈中的,用完即消失。
对于栈来说很好理解,用完即释放。
1. 什么是栈
栈是一种特殊的线性表。其特殊性在于限定插入或删除操作的操作只能在线性表的一段进行。如示:
结论:后进先出(Last In First Out),简称为LIFO线性表。
2. 栈的特点
- 栈是一种操作受限的线性表
- 修改是按先进后出的原则。
3. 栈在Java中的使用
- 基本数据类型、局部变量存放在栈中
- 对象的引用变量存放在栈中
- 数据一旦执行完毕,占内存就会释放
- 栈内存里的数据,没有初始化,需要手动设置
二、堆
1.什么是堆内存
堆内存是是Java内存中的一种,
它的作用是用于存储Java中的对象和数组,当我们new一个对象或者创建一个数组的时候,就会在堆内存中开辟一段空间给它,用于存放。
2.堆内存的特点是什么
第一点:堆其实可以类似的看做是管道,或者说是平时去排队买票的的情况差不多,
所以堆内存的特点就是:先进先出,后进后出,也就是你先排队,好,你先买票。
第二点:堆可以动态地分配内存大小,生存期也不必事先告诉编译器,因为它是在运行时动态分配内存的,但缺点是,由于要在运行时动态分配内存,存取速度较慢
3.new对象在堆中如何分配
由Java虚拟机的自动垃圾回收器来管理