这些难搞的内存问题你都懂了吗?

💡 原文中文,约8800字,阅读约需21分钟。
📝

内容提要

本文介绍了Linux内核内存管理的相关知识,包括进程内存的申请和分配过程、OOM时的情况以及系统申请的内存存放位置和回收方式。

🎯

关键要点

  • 本文介绍了Linux内核内存管理的基本知识,包括进程内存的申请和分配、OOM情况、内存存放位置和回收方式。
  • 进程内存的申请和分配过程涉及exec函数、mmap函数和内存分配器的使用。
  • OOM(内存用光)是系统在内存耗尽时的自我保护机制,会选择一个进程杀死以释放内存。
  • OOM的选择因素包括进程占用内存、运行时间、优先级等,可以通过调整oom_adj参数干预。
  • 系统申请的内存分为cache和普通物理内存,内存的映射方式包括共享文件映射和私有文件映射。
  • 手动回收内存可以通过操作drop_caches文件实现,系统也会自动进行内存回收。
  • tmpfs文件系统是基于内存的,能够限制使用内存大小,且与共享内存机制相关。
  • 内存的自动释放机制通过kswapd线程周期性检查内存使用情况,进行内存回收。
  • 总结了Linux内存管理的关键点,包括进程地址空间、内存回收方式和OOM处理机制。
➡️

继续阅读