栈(Stack)
“栈” 是一种数据结构

栈是一种数据结构,数据的存储方式为:FILO(先进后出)。
“栈” 用来存储程序执行的临时数据。
“栈” 的作用是为执行程序提供必须的内存空间,配合程序执行、函数调用、存放程序执行时的临时数据,配合线程执行用的。
如:方法函数定义
int method(){int a = 1;int b = 2;int c = a + b;}
上述变量会依次压入栈中,相关结构:

- 堆空间分配从大地址向小地址增长
-
如:函数调用
int method(){ int a = 1; int b = 2; int c = add(a,b); } int add(int a,int b){ return a + b; }上述才做,依次压栈,相关结构如下:

“?”用来存放 resturn 的值
- 在返回后,“Stack Point”前的出栈数据,已被标记为清除
“栈” 中存在的数据可能是对象
经“逃逸分析”后的对象,除了方法中没有其他地方被使用到,对象可能被存储到“栈”中。每个线程都有自己的栈和程序指针
堆(Heap)
在 JVM 中,堆(Heap)不作为一种数据结构进行分析,堆(Heap)中存放一堆数据结构。
堆的作用用来存储数据,应用通过堆存储数据(包括:空间申请、回收、托管)。
