摘要:
问题 1:内存回收与 OOM 怎么理解 LRU 内存回收?回收后的内存又到哪里去了?OOM 是按照虚拟内存还是实际内存来打分?怎么估计应用程序的最小内存?其实在 Linux 内存的原理篇和 Swap 原理篇中我曾经讲到,一旦发现内存紧张,系统会通过三种方式回收内存。我们来复习一下,这三种方式分别是 阅读全文
摘要:
前几节,通过几个案例,我们分析了各种常见的内存性能问题。我相信通过它们,你对内存的性能分析已经有了基本的思路,也熟悉了很多分析内存性能的工具。你肯定会想,有没有迅速定位内存问题的方法?当定位出内存的瓶颈后,又有哪些优化内存的思路呢? 今天,我就来帮你梳理一下,怎样可以快速定位系统内存,并且总结了相关 阅读全文
摘要:
上一节我们详细学习了 Linux 内存回收,特别是 Swap 的原理,先简单回顾一下。 在内存资源紧张时,Linux 通过直接内存回收和定期扫描的方式,来释放文件页和匿名页,以便把内存分配给更需要的进程使用。 文件页的回收比较容易理解,直接清空缓存,或者把脏数据写回磁盘后,再释放缓存就可以了。 而对 阅读全文
摘要:
上一节,我通过一个斐波那契数列的案例,带你学习了内存泄漏的分析。如果在程序中直接或间接地分配了动态内存,你一定要记得释放掉它们,否则就会导致内存泄漏,严重时甚至会耗尽系统内存。 不过,反过来讲,当发生了内存泄漏时,或者运行了大内存的应用程序,导致系统的内存资源紧张时,系统又会如何应对呢? 在内存基础 阅读全文
摘要:
通过前几节对内存基础的学习,我相信你对 Linux 内存的工作原理,已经有了初步了解。 对普通进程来说,能看到的其实是内核提供的虚拟内存,这些虚拟内存还需要通过页表,由系统映射为物理 当进程通过 malloc() 申请虚拟内存后,系统并不会立即为其分配物理内存,而是在首次访问时,才通过缺页异常陷入内 阅读全文