Java堆和栈 堆和栈都是Java用来在内存中存放数据的地方。 栈存放基本数据类型的变量和对象的引用,当超过作用域后释放。堆存放new出来的对象和数组。堆可以动态分配内存大小,生存周期不必事先告诉编译器,java的垃圾收集器会自动收走不再使用的数据。存在栈中的数据大小和生存周期必须是确定的,缺乏灵活性。栈的存取速度比较快,仅次于CPU中的寄存器,堆要在运行时动态分配内存,存取速度较慢。栈数据可以共享,堆不可以。栈是一种线形集合,其添加和删除元素的操作应在同一段完成,栈按照后进先出的方式进行处理,堆地址是不连续的,可以随机访问。