.NET 的内存管理机制(二)

简介: .Net堆栈的内存分配机制

引言

对于值类型来说,一般创建在线程的堆栈上。但并非所有的值类型都创建在线程的堆栈上,例如作为
类的字段时,值类型作为实例成员的一部分也被创建在托管堆上;装箱发生时,值类型字段也会拷贝在托
管堆上。
对于分配在堆栈上的局部变量来说,操作系统维护着一个堆栈指针来指向下一个自由空间的地址,并
且堆栈的内存地址是由高位到低位向下填充。以下例而言:

public static void Main()
{
int x = 100;
char c = 'A';
}

假设线程栈的初始化地址为 50000,因此堆栈指针首先指向 50000 地址空间。代码由入口函数 M
ain 开始执行,首先进入作用域的是整型局部变量 x,它将在栈上分配 4Byte 的内存空间,因此堆栈指针
向下移动 4 个字节,则值 100 将保存在 49997~50000 单位,而堆栈指针表示的下一个自由空间地址为
49996,如图所示:
1.png
接着进入下一行代码,将为字符型变量 c 分配 2Byte 的内存空间,堆栈指针向下移动 2 个字节至 49
994 单位,值’A’会保存在 49995~49996 单位,地址的分配如图:
2.png
最后,执行到 Main 方法的右括号,方法体执行结束,变量 x 和 c 的作用域也随之结束,需
要删除变量 x 和 c 在堆栈内存中的值,其释放过程和分配过程刚好相反:首先删除 c 的内存,堆
栈指针向上递增 2 个字节,然后删除 x 的内存,堆栈指针继续向上递增 4 个字节,程序执行结
束,此时的内存状况为:
3.png
其他较复杂的分配过程,可能在作用域和分配大小上有所不同,但是基本过程大同小异。栈
上的内存分配,效率较高,但是内存容量不大,同时变量的生存周期随着方法的结束而消亡。

相关文章
|
4天前
|
存储 开发框架 .NET
"揭秘.NET内存奥秘:从CIL深处窥探值类型与引用类型的生死较量,一场关于速度与空间的激情大戏!"
【8月更文挑战第16天】在.NET框架中,通过CIL(公共中间语言)可以深入了解值类型与引用类型的内存分配机制。值类型如`int`和`double`直接在方法调用堆栈上分配,访问迅速,生命周期随栈帧销毁而结束。引用类型如`string`在托管堆上分配,堆栈上仅存储引用,CLR负责垃圾回收,确保高效且自动化的内存管理。
17 6
|
4天前
|
存储 缓存 编译器
Linux源码阅读笔记06-RCU机制和内存优化屏障
Linux源码阅读笔记06-RCU机制和内存优化屏障
|
4天前
|
缓存 程序员
封装一个给 .NET Framework 用的内存缓存帮助类
封装一个给 .NET Framework 用的内存缓存帮助类
|
4天前
|
缓存 开发框架 .NET
看看 Asp.net core Webapi 项目如何优雅地使用内存缓存
看看 Asp.net core Webapi 项目如何优雅地使用内存缓存
|
7天前
|
NoSQL Redis
Redis——设置最大内存 | key淘汰机制
Redis——设置最大内存 | key淘汰机制
19 0
|
1月前
|
存储 缓存 监控
Flink内存管理机制及其参数调优
Flink内存管理机制及其参数调优
|
1月前
|
存储 算法 调度
深入理解操作系统的内存管理机制
【7月更文挑战第12天】本文将深入探讨操作系统中至关重要的内存管理机制。内存是计算机系统中宝贵的资源,其管理效率直接影响系统性能。我们将从内存管理的基本原理出发,逐步解析分页和分段技术、虚拟内存的概念以及内存分配策略等核心内容。通过实例分析,揭示现代操作系统如何优化内存使用,提高系统响应速度及资源利用效率。
|
1月前
|
存储 缓存 算法
操作系统中的内存管理机制探究
【7月更文挑战第13天】本文深入探讨了操作系统中至关重要的内存管理机制,揭示了其对系统性能与稳定性的影响。通过分析现代操作系统中内存管理的基本原理、关键技术以及面临的挑战,文章提供了对内存分配策略、虚拟内存技术和缓存管理等核心概念的深度解析。进一步地,文章讨论了内存泄漏和碎片化问题,提出了相应的解决策略,旨在为读者提供操作系统内存管理的全面视角,并指出未来可能的发展趋势。
|
1月前
|
缓存 监控 关系型数据库
深入理解Linux操作系统的内存管理机制
【7月更文挑战第11天】在数字时代的浪潮中,Linux操作系统凭借其强大的功能和灵活性,成为了服务器、云计算以及嵌入式系统等领域的首选平台。内存管理作为操作系统的核心组成部分,对于系统的性能和稳定性有着至关重要的影响。本文将深入探讨Linux内存管理的基本原理、关键技术以及性能优化策略,旨在为读者提供一个全面而深入的理解视角,帮助开发者和系统管理员更好地优化和管理Linux系统。
|
1月前
|
机器学习/深度学习 计算机视觉 网络架构
【YOLOv8改进 - 注意力机制】HCF-Net 之 PPA:并行化注意力设计 | 小目标
YOLO目标检测专栏介绍了HCF-Net,一种用于红外小目标检测的深度学习模型,它通过PPA、DASI和MDCR模块提升性能。PPA利用多分支特征提取和注意力机制,DASI实现自适应特征融合,MDCR通过多层深度可分离卷积细化空间特征。HCF-Net在SIRST数据集上表现出色,超越其他方法。论文和代码分别在[arxiv.org](https://arxiv.org/pdf/2403.10778)和[github.com/zhengshuchen/HCFNet](https://github.com/zhengshuchen/HCFNet)上。YOLOv8的PPA类展示了整合注意力机制的结构