java中堆和栈的区别:
我们平常说的堆和栈,其实就是Java虚拟机中的虚拟机栈和堆,为什么说是虚拟机栈,因为栈分为两个,一个是本地方法栈,另一个就是我们平常说的虚拟机栈。虚拟机栈是线程私有的,这就意味着它的生命周期和线程相同。我们在使用一个方法时,在虚拟机栈中会创建一个栈帧用于保存局部变量表、操作数栈、动态链接和方法接口等信息。堆是线程共享的区域。比如我们使用new()创建的对象所在的位置就在堆中。堆还可以细分为老年代(Eden)和新生代(From Survior和To Survior)。如GC(垃圾收集)等便是在堆上进行的。