java程序为了提高程序的效率,对数据进行了不同空间的分配,分为5部分:
- 栈
- 堆
- 方法区
- 本地方法区(和系统有关)
- 寄存器(与CPU有关)
4和5不需要谈论。
1.栈:
局部变量:在方法定义中,或声明方法上的变量。
栈中存放的是局部变量。
int a = 10;
a就是存放在栈中。
当方法结束就释放掉
2.堆:
1.堆中存放的是new的东西
eg:
int[] arr = new int[3]
new int[3]就是在堆中
int[] arr 在栈中存放
2.在堆中存放的有地址值
每个变量都有默认值:
byte,short,int,long :0
double,float : 0.0
boolean : false;
引用类型: null
3.堆中数据使用完成就变成了垃圾,但是并没有立即回收。会在垃圾回收器空闲的时候回收