1.栈是用来存放基本类型的变量和引用类型的变量,堆用来存放new出来的对象和数组。
2.栈的存取速度快,但不灵活。堆的存取速度慢,但是存取灵活,空间动态分配。
3.栈在建立在连续的物理位置上,而堆只需要逻辑位置连续即可。
4.堆是JVM运行时最大的内存区域。
巨佬的答案:
Java的内存分为两类,一类是栈内存,一类是堆内存。栈内存是指程序进入一个方法时,会为这个方法单独分配一块私属存储空间,用于存储这个方法内部的局部变量,当这个方法结束时,分配给这个方法的栈会释放,这个栈中的变量也将随之释放。
堆是与栈作用不同的内存,一般用于存放不放在当前方法栈中的那些数据,例如,使用new创建的对象都放在堆里,所以,它不会随方法的结束而消失。方法中的局部变量使用final修饰后,放在堆中,而不是栈中。
1.heap是堆,stack是栈。
2.stack的空间由操作系统自动分配和释放,heap的空间是手动申请和释放的,heap常用new关键字来分配。
3.stack空间有限,heap的空间是很大的自由区。