Wrayの知识库 Wrayの知识库
首页
  • Java 基础
  • Java 集合
  • Java 并发
  • Java IO
  • JVM
  • Spring Framework
  • Spring Boot
  • Spring Cloud
  • Spring Security
  • MySQL
  • Redis
  • 计算机基础
  • 操作系统原理
  • Linux
  • MacOS
  • Windows
  • 系统工程与研究专题
  • AI 基础
  • 大模型基础
  • Prompt 工程
  • RAG 检索增强生成
  • Agent 智能体
  • AI 应用开发
  • AI 工程化
  • AI 安全与治理
  • AI 面试与设计题
  • 纸质书
  • 电子书
  • 学习课程
疑难杂症
GitHub (opens new window)
首页
  • Java 基础
  • Java 集合
  • Java 并发
  • Java IO
  • JVM
  • Spring Framework
  • Spring Boot
  • Spring Cloud
  • Spring Security
  • MySQL
  • Redis
  • 计算机基础
  • 操作系统原理
  • Linux
  • MacOS
  • Windows
  • 系统工程与研究专题
  • AI 基础
  • 大模型基础
  • Prompt 工程
  • RAG 检索增强生成
  • Agent 智能体
  • AI 应用开发
  • AI 工程化
  • AI 安全与治理
  • AI 面试与设计题
  • 纸质书
  • 电子书
  • 学习课程
疑难杂症
GitHub (opens new window)
  • 操作系统概述
  • 计算机基础

    • 计算机系统全景
    • 数制编码与数据表示
    • CPU架构与指令执行
    • 内存层次与缓存
      • 1. 学习目标
      • 2. 知识框架
      • 3. 核心概念
      • 4. 机制与实践
      • 5. 常用命令与工具
      • 6. 常见误区
      • 7. 进阶研究方向
      • 8. Tips 快问快答
      • 9. 总结
    • 总线IO与设备模型
    • 文件存储与磁盘
    • 网络基础与协议栈
    • 虚拟化容器与云基础
  • 操作系统原理

  • Linux

  • MacOS

  • Windows

  • 系统工程与研究专题

目录

内存层次与缓存

内存系统决定了程序能否高效访问数据。寄存器、CPU Cache、内存、磁盘缓存、交换空间共同构成层次结构,越靠近 CPU 越快也越小。

# 1. 学习目标

  • 理解内存层次结构和局部性原理。
  • 能解释缓存命中、缺页、Swap、OOM 的基本原因。
  • 能把应用内存泄漏、系统内存压力和缓存行为区分开。

# 2. 知识框架

内存层次与缓存
├─ 入门:建立术语、对象和日常操作的直觉
├─ 进阶:理解机制、边界和跨平台差异
└─ 专家:能排障、能设计、能阅读实现和研究材料

内存优化不是简单地“多加内存”,而是让热数据尽量靠近 CPU,让生命周期清晰,让系统缓存和应用缓存各司其职。

# 3. 核心概念

主题 说明 工程关注
局部性 程序倾向于重复访问相邻或近期访问过的数据 数组遍历、缓存友好数据结构
虚拟内存 进程看到连续地址,内核映射到物理页 隔离、分页、缺页异常
Page Cache 内核用空闲内存缓存文件内容 文件 IO 性能、内存观测误判
Swap 把不活跃内存页换出到磁盘 延迟抖动、内存压力、系统稳定性

# 4. 机制与实践

  1. 观察内存时区分 used、free、available、buffer/cache。
  2. 大对象和缓存要有容量上限、淘汰策略和监控指标。
  3. 延迟抖动时检查缺页、Swap、GC 和磁盘 IO 是否同时出现。

# 5. 常用命令与工具

命令或工具 作用 使用建议
free -h 查看 Linux 内存使用概况 重点看 available 而不是只看 free
vmstat 1 观察内存、Swap、运行队列和 IO 适合看趋势
memory_pressure 查看 macOS 内存压力 判断是否接近换页风险

# 6. 常见误区

  • 把 Page Cache 当成内存泄漏:Linux 会尽量利用空闲内存做缓存,关键要看 available 和回收能力。
  • 缓存无上限:应用缓存如果没有上限,最终会把业务优化变成内存故障。
  • 忽略 NUMA:多路服务器上跨 NUMA 节点访问可能带来明显延迟。

# 7. 进阶研究方向

  • 阅读虚拟内存、页表、TLB 和缺页异常的机制。
  • 学习 jemalloc、tcmalloc、glibc malloc 的基本差异。
  • 分析一次 OOM 或 Swap 抖动事故的完整证据链。

# 8. Tips 快问快答

Q:free 很低是不是代表内存不够?

A:不一定。现代系统会把空闲内存用于缓存,available 更能反映可用内存。

Q:什么是内存泄漏?

A:对象或内存不再有业务价值但仍被引用或占用,导致无法释放并持续增长。

Q:为什么 Swap 会让服务抖动?

A:Swap 访问磁盘远慢于内存,活跃页被换出后会造成明显延迟。

# 9. 总结

内存层次结构的核心是速度、容量和成本的折中。工程上要同时理解应用对象、内核缓存、虚拟内存和物理资源,才能正确判断内存问题。

上次更新: 2026/06/25, 10:02:19
CPU架构与指令执行
总线IO与设备模型

← CPU架构与指令执行 总线IO与设备模型→

Copyright © 2023-2026 Wray | 鄂ICP备2024050235号-1
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式