栈和堆的区别

JVM是基于堆栈的虚拟机.JVM为每个新创建的线程都分配一个堆栈.也就是说,对于一个Java程序来说,它的运行就是通过对堆栈的操作来完成的。堆栈以帧为单位保存线程的状态。JVM对堆栈只进行两种操作:以帧为单位的压栈和出栈操作。

差异

1.堆内存用来存放由new创建的对象和数组。 

2.栈内存用来存放方法或者局部变量等 

3.堆是先进先出,后进后出 

4.栈是后进先出,先进后出

相同

1.都是属于Java内存的一种 

2.系统都会自动去回收它,但是对于堆内存一般开发人员会自动回收它

你可能感兴趣的:(栈和堆的区别)