[转帖]栈帧

· 浏览次数 : 0

小编点评

**函数运行内存分配** 函数运行需要在栈上创建称为 **栈帧** 的内存空间,用于存储函数所需的所有变量。 **栈帧的存储方式** 栈帧存储在 **堆** (heap) 上。堆是应用程序内存的动态分配区域。 **创建栈帧的步骤** 1. **创建一片栈帧区域:**在函数调用时申请一定的大小的内存空间,并将其存储在堆中。 2. **初始化栈帧:**为每个局部变量分配存储空间并设置其初值。 3. **分配堆空间:**为函数调用分配更大的内存空间,用于存储函数所需的所有变量。 **释放栈帧** 当函数退出时,需要释放所创建的栈帧空间。这可以通过以下步骤实现: 1. **回收局部变量内存:**遍历函数的局部变量,释放它们分配的内存空间。 2. **释放堆空间:**释放函数调用分配的整个堆空间。 **总结** 函数运行需要在栈上创建和释放栈帧,这些内存空间用于存储函数所需的所有变量。这使得函数能够在执行完其操作后释放内存并允许其他程序使用。

正文

https://www.jianshu.com/p/25af713a3c6f

 

简介:

用来给函数运行提供内存空间的,取内存于stack上,当函数调用时,产生栈帧,函数调用释放栈帧.

栈帧存储:

  • 局部变量
  • 形参
  • 内存字段描述值

如图:


 
image.png

main函数运行会开辟一片栈帧,用来存储var声明的变量,函数调用也会开辟栈帧

new关键字调用是在heap(堆)上申请空间

与[转帖]栈帧相似的内容:

[转帖]栈帧

https://www.jianshu.com/p/25af713a3c6f 简介: 用来给函数运行提供内存空间的,取内存于stack上,当函数调用时,产生栈帧,函数调用释放栈帧. 栈帧存储: 局部变量 形参 内存字段描述值 如图: image.png main函数运行会开辟一片栈帧,用来存储var

【转帖】15.JVM栈帧的内部结构

目录 1.JVM栈帧的内部结构 1.JVM栈帧的内部结构 栈帧存储的数据可以分为下面的5个部分: 1.局部变量表(重点) 2.操作数栈(重点) 3.动态链接,也称为指向运行时常量池的方法引用 4.方法返回地址,也称为方法退出或者异常退出的定义 5.一些附加信息 每个栈帧都有自己的大小,各个栈帧的大小

【转帖】15.JVM栈帧的内部结构

目录 1.JVM栈帧的内部结构 1.JVM栈帧的内部结构 栈帧存储的数据可以分为下面的5个部分: 1.局部变量表(重点) 2.操作数栈(重点) 3.动态链接,也称为指向运行时常量池的方法引用 4.方法返回地址,也称为方法退出或者异常退出的定义 5.一些附加信息 每个栈帧都有自己的大小,各个栈帧的大小

【转帖】15.JVM栈帧的内部结构

目录 1.栈中存储的是什么?2.栈的运行原理 1.栈中存储的是什么? 1.每个线程都有自己的栈,栈中存储的是栈帧。 2.在这个线程上正在执行的每个方法都各自对应一个栈帧。方法与栈帧是一对一的关系。 3.栈帧是一个内存区块,是一个数据集,维系着方法执行过程中的各种数据信息。 2.栈的运行原理 1.JV

【转帖】16.JVM栈帧内部结构-局部变量表

目录 1.局部变量表(Local variables) 1.局部变量表(Local variables) 1.局部变量表也称为局部变量数组或本地变量表。 2.局部变量表定义为一个数字数组,主要用于存储方法参数和定义在方法体内的局部变量。(局部变量表的作用) 3.局部变量表示栈帧中的数据,栈帧被线程私

[转帖]【JVM】字节码执行引擎

引入 class文件就是字节码文件,是由虚拟机执行的文件。也就是java语言和C & C++语言的区别就是,整个编译执行过程多了一个虚拟机这一步。这个在 类文件结构 中已经解释。上一节讲了虚拟机是如何加载一个class的,这一节就讲解虚拟机是如何执行class文件的。 运行时栈帧结构 1.定义 栈是

[转帖]全栈监控:如何设计全栈监控策略?

https://zhuanlan.zhihu.com/p/597779642 你好,我是高楼。这一篇,我们来看看怎样设计全链路压测的全局监控。 对于全链路压测来说,因为涉及到的服务比较多,所以分析逻辑难度加大,对监控的要求当然也更加复杂。 如果我们总是在性能瓶颈出现之后再去做分析,很可能会发现缺少各

[转帖]堆和栈的概念

定义: 栈: 栈是为执行线程留出的内存空间。当函数被调用的时候,栈顶为局部变量和一些 bookkeeping 数据预留块。当函数执行完毕,块就没有用了,可能在下次的函数调用的时候再被使用。栈通常用后进先出(LIFO)的方式预留空间;因此最近的保留块(reserved block)通常最先被释放。这么

[转帖]Linux 网络栈原理、监控与调优:前言(2022)

http://arthurchiao.art/blog/linux-net-stack-zh/ Published at 2022-07-02 | Last Update 2022-07-02 本文尝试从技术研发与工程实践(而非纯理论学习)角度,在原理与实现、监控告警、 配置调优三方面介绍内核5.1

[转帖]Linux 网络栈接收数据(RX):原理及内核实现(2022)

http://arthurchiao.art/blog/linux-net-stack-implementation-rx-zh/ Published at 2022-07-02 | Last Update 2022-08-28 Fig. Steps of Linux kernel receivin