堆内存
堆内存 是java内存中的一种,它的作用是用于存储java中的对象和数组,当我们new一个对象(对象的成员变量)或者创建一个数组的时候,就会在堆内存中开辟一段空间给它,用于存放。
特点:
-
先进先出,后进后出
-
堆可以动态地分配内存大小,生存期也不必事先告诉编译器,因为它是在运行时动态分配内存的,但缺点是,由于要在运行时动态分配内存,存取速度较慢。
-
new对象在堆中如何分配?
由Java虚拟机的自动垃圾回收器来管理。
- 堆内存是所有线程共有的
栈内存
栈内存是Java的另一种内存,主要是用来执行程序用的。
栈内存用来存放方法 或者局部变量等
特点:
-
先进后出,后进先出
-
存取速度比堆要快,仅次于寄存器,栈数据可以共享,但缺点是,存在栈中的数据大小与生存必须是确定的,缺乏灵活性
-
栈内存可以称为一级缓存,由垃圾回收器自动回收
-
栈内存是线程私有的