02 堆和栈的区别

vvEcho 2024-01-20 14:08:36
Categories: Tags:

1.堆是不连续的,所以分配的内存是在运行期确认的,因此大小不固定;堆对于整个应用程序都是共享、可见的;

2.栈是连续的,所以分配的内存大小要在编译期就确认,大小是固定的;栈对于线程是可见的,所以也是线程私有,他的生命周期和线程相同(所以说,栈里面是一定不会存在垃圾回收的问题);

3.栈内存存储一些基本类型的值,对象的引用,方法等;堆内存存储的是对象的实体;堆内存放的对象会被垃圾回收机制不定时的回收

4.栈内存的更新速度要快于堆内存(仅次于寄存器又称程序计数器),因为局部变量的生命周期很短;栈内存放的变量生命周期一旦结束就会被释放