当前位置: 首页 > news >正文

内存的堆、内存的栈有什么区别

栈(Stack) 是 “CPU 自动管理的临时工作台”,堆(Heap) 是 “程序员申请的大仓库”;
前者 随方法进出自动生死,后者 手动 or GC 清理,速度差一个数量级。

栈(Stack) 是 “CPU 自动管理的临时工作台”,堆(Heap) 是 “程序员申请的大仓库”;
前者 随方法进出自动生死,后者 手动 or GC 清理,速度差一个数量级。

一、生命周期:谁掌控生死?

表格
复制
场景
分配时机 方法调用 瞬间 CPU 压栈 new / malloc 时向操作系统申请
释放时机 方法 return 即弹出 手动 free / 垃圾回收 非确定
是否确定性 ✅ 编译期就定好 ❌ 运行期动态决定
典型例子
int x = 3; → 栈; new Person() → 堆。

二、速度差异:CPU 缓存 vs 系统调用

表格
复制
指标
分配/释放速度 1 条指令(移动 esp/rsp) 用户态→内核态→堆管理器,百条指令+锁
局部性 连续压栈,CPU 缓存友好 可能碎片化,缓存命中率低
并发成本 无锁 需 堆锁 or 线程局部分配
数量级:栈分配 纳秒级,堆分配 微秒级。

三、空间与限制

表格
复制
维度
默认大小 Windows 1 MB / Linux 8 MB 线程栈 仅受 进程地址空间 限制(2-128 GB)
大块数据 不宜(容易 StackOverflow) 适合 大对象、数组、字符串
碎片问题 无(先进后出) 有 → 需 压缩/整理

四、值类型 vs 引用类型 映射

csharp
复制
void Foo()
{int x = 10;              // 栈Point p = new Point();   // 栈(值类型)String s = new String(); // 引用本身在栈,**对象在堆**
}
 

五、一张图速记

复制
方法调用
┌---------┐
│ 参数    │ ← 栈顶
│ 返回地址│
│ 局部变量│
└---------┘  ← esp 自动上下移动 = 1 条指令↓ new
┌-------------------------------┐
│          托管堆               │
│ Person  String  byte[] ...    │  GC 回收、可能碎片
└-------------------------------┘
 

六、金句

“栈由 CPU 自动压弹,方法结束即回收,速度快、空间小;
堆由 程序员或 GC 管理,生命周期灵活,空间大、速度慢、易碎片;
值类型和引用类型的 性能差异根源 就在于 栈 vs 堆 的分配策略。
http://www.gsyq.cn/news/21313.html

相关文章:

  • 用 AI 批量优化思源笔记排版
  • 2025 年连接线线束厂家最新推荐榜:新能源电子 / 机器人电子等多领域优质企业品控、定制能力及合作案例全面盘点
  • 2025 年试验机最新推荐榜单:电子万能材料 / 橡胶拉力 / 塑料拉力 / 环刚度 / 冲击试验机优质厂家精选及科研工业合作参考
  • 2025 年国内卷帘门源头厂家最新推荐排行榜:电动 /pvc/ 钢质 / 自动 / 防火卷帘门优质厂家精选
  • 如何让AI实现自动化 —— PlayWright MCP 实测 - 教程
  • 2025 年济南画室最新推荐榜单:聚焦小班教学与全封闭管理,权威解析优质画室品牌榜山东画室推荐
  • 2025年无锡黄金回收商家电话最新权威推荐榜:专业鉴定与高价回收口碑之选,黄金回收公司推荐
  • 使用git-filter-repo 清除大文件
  • C# 23种设计模式详解与示例 - 详解
  • 2025年最新销售管理系统使用指南:顶级销售是如何使用CRM系统? - SaaS软件
  • 2025 年激光焊锡源头厂家最新推荐排行榜:覆盖多行业需求,助力企业精准选优质设备供应商手机摄像头/线材类/通讯行业/FPC柔性线路板激光焊锡厂家推荐
  • 【光照】UnityURP中的[HDR贴图]
  • ​​电压探头的应用场景与技术选型指南​​
  • 基于Java+Springboot+Vue开发的体育用品购物销售商城管理系统源码+运行步骤
  • AI Agent 产品推荐方案
  • 二层环路检测
  • 2025年国内搅拌釜优质厂家排行榜:值得推荐的搅拌釜厂家有哪些?
  • 校验码编码
  • 音频标签,无语义的布局标签,字符实体(尖括号和空格)
  • 如何禁用键盘左侧Win键
  • 【日记】央视不要我,笑死(1672 字)
  • 瑜伽馆会员约课小程序页面功能梳理 - 教程
  • 2025-10-14
  • MySQL笔记---表的约束 - 实践
  • 深入解析:Atlas Mapper 教程系列 (8/10):性能优化与最佳实践
  • 新买的笔记本电脑如何将旧笔记本数据迁移完整迁移克隆过来?买了新电脑,旧电脑大量数据如何迁移?
  • Markdown 是一种「用肉眼就能看懂」标记语言
  • 详细介绍:如何在 Apache 中启用 HSTS 以增强网络安全性 ?
  • Java 与智慧环保:生态监测与低碳治理
  • VMware ESXi 9.0.1.0 macOS Unlocker OEM BIOS 2.7 Huawei 华为 定制版