1、存储对象不同:栈存储的是局部变量,堆存储的是实体。
2、释放机制不同:栈的里面存储的局部变量生命周期结束,则就释放掉局部变量;而堆的话,则是通过垃圾回收机制去释放掉实体。
3、更新速度不同:局部变量的生命周期短,so,栈的更新速度快于堆的更新速度。
4、申请空间不同:栈是编译器自动分配:存储局部变量,函数参数;而堆是程序员写的代码手动分配,存储的是实体。
总结如下:
堆(heap) | 栈(stack) | |
时效 | 持久化 | 临时 |
存储对象 | 全局(实体) | 局部(局部变量,函数参数) |
内存分配 | 手动申请,手动释放 | 自动申请,自动释放(出栈时) |