堆栈是一个不容忽视的概念,堆栈是两种数据结构。堆栈都是一种数据项按序排列的数据结构,只能在一端(称为栈顶(top))对数据项进行插入和删除。目标堆栈是指目标程序的形参、局部变量、返回值和真实数据的存储区。一般目标程序向系统申请,由系统自动分配和回收。内存空间在逻辑上分为三部分:代码区、静态数据区和动态数据区,动态数据区又分为栈区和堆区。代码区:存储方法体的二进制代码。高级调度(作业调度)、中级调度(内存调度)、低级调度(进程调度)控制代码区执行代码的切换。静态数据区:存储全局变量、静态变量、常量,常量包括final修饰的常量和String常量。系统自动分配和回收。栈区:存储运行方法的形参、局部变量、返回值。由系统自动分配和回收。堆区:new一个对象的引用或地址存储在栈区,指向该对象存储在堆区中的真实数据。由程序员分配和回收(例如Java中由JVM虚拟机的垃圾回收机制自动回收)。目标堆栈简单来说用于管理目标程序运行时的形参、局部变量、返回值以及数据的存储区,由系统或程序员进行分配和回收。