0.0 the crazy overflow

Heap(堆)、Stack(栈)的概念

  • 种数据结构。
  • 都是一种按序排列的数据结构,只能在一端对数据项进行插入、删除操作
  • 单片机中的堆栈是特殊的存储区,负责暂存数据和地址,保护断点现场
  • 堆,队列优先,先进先出(FIFO—first in first out)
  • 栈,先进后出(FILO—First-In/Last-Out)。

堆和栈的区别

一、堆和栈分配空间的区别

二、堆栈缓存方式区别(操作系统)

三、堆栈数据结构的区别(数据结构)

堆:对可以看成是一棵树,如堆排序 栈:一种后进先出的数据结构

Java中栈和堆的区别

Java中变量在内存中的分配

  1. 类变量(static修饰的变量):在程序加载时在堆中为其开辟内存,其地址放于栈中以便高速访问。(静态变量生命周期一直持续到整个系统关闭)。
  2. 实例变量:Java中new时,系统在堆中开辟并不一定是连续的空间分配给变量(比如说类实例),然后根据零散的堆内存地址,通过哈希算法换算为一长串数字以表征这个变量在堆中的”物理位置”。 实例变量的生命周期–当实例变量的引用丢失后,将被GC(垃圾回收器)列入可回收“名单”中,但并不是马上就释放堆中内存。
  3. 局部变量:局部变量,由声明在某方法,或某代码段里(比如for循环),执行到它的时候在栈中开辟内存,当局部变量一但脱离作用域,内存立即释放