内存结构:
Java程序在运行时,需要在内存中分配空间,为了提高运算效率,有对空间进行了不同区域的划分,因为每一片区域都有特定的处理数据方式和内存管理方式
共分配了5块区域,每区域中处理方式不同
栈内存、堆内存、 方法区、本地方法区、寄存器
栈内存:
- 用于存储局部变量
- 当数据使用完,所占空间会自动释放
例如:
int a = 5;
int b = a;
b = 8;
堆内存
用于存放数组和对象,通过new建立的实例都存放在堆内存中
情景:分析数组如何存放在内存中
int [] a = new int[3]
例如:
int[] a = new int[3]
int[] b = a;
b[1] = 89;
a[1] = 98;
a = null;
问:此时有没有垃圾数据,答:没有,a的引用没有指向了,但是b的还在使用,所以没有垃圾数据
例如:
int[] a = new int[3]
int[] b = new int[3]
只要是new了就会开辟新的内存
总结
- 数组和对象,通过new建立的实例都存放在堆内存中
- 每个实体都有内存地制值
- 实体中的变量都有默认初始化值
- 当实体=null时,实体不在被使用,会在不确定的时间内被垃圾回收器回收