堆和栈都是Java中常用的存储结构,都是内存中存放数据的地方。
1、栈的特点:
容量小、速度快、适合存放小型数据。
如基本数据类型和对象类型的引用。
2、堆的特点:
堆的特点与栈相反,因此适合存放对象本身。
当一个方法执行的时候,每个方法都会建立自己的内存栈,一个内存栈由两个部分构成,方法定义的变量(栈)和对象本身(堆),在方法结束的时候栈也会自动销毁,但是堆不会,一个对象的创建是很耗资源的,假如A对象销毁后B对象又要调用A对象的方法,A对象又要被创建出来,所以堆不会随着方法的销毁而销毁,程序中创建的对象都会保存到运行时数据区中,只有当一个对象没有任何引用变量去引用它时,系统的垃圾回收器(GC)才会在合适的时候回收它。