Java堆栈的概念和类初始化过程

面试的时候经常会有面试官问道Java堆栈的概念,这里做下总结。
栈内存:存放局部变量,为编译器自动分配和释放。
堆内存:存放new出来的东西,或者用final修饰的变量,需手动申请和释放空间。

以数组为例的栈内存、堆内存图解:
Java堆栈的概念和类初始化过程_第1张图片
栈内存的特点:用完就释放掉,空间有限。
堆内存特点:每一个new出来的对象都有地址值,每个变量都有默认值(byte,shrot,int,long等是0,float,double是0.0),堆内存内对象使用完会变成垃圾,但是没有立即回收,会在垃圾回收器空闲时回收,自由区大。

一个对象的创建在堆栈中的初始化过程:
Student s = new Student();
A:把Student.class文件加载到内存(类加载器)
B:在栈内存为s开辟空间
C:在堆内存为学生对象申请空间
D:给学生对象的成员变量进行默认初始化
E:给学生对象的成员变量进行显示初始化
F:通过构造方法给学生对象的成员变量进行初始化
G:把堆内存的地址赋值给s变量

你可能感兴趣的:(Java堆栈的概念和类初始化过程)